当前位置: 首页 > news >正文

docker-compose

这章以实例为主,学习他的语法,以及docker-compose的使用思路。下面简单的例子可以通过docker-compose官网获得。该🌰涉及的语法不是全部,但是理解他的设计架构后后面的一些参数也能自行学习了。

Docker-compose文件讲解

  • Docker-compos默认使用docker-compose.yml为文件名,或者用-f参数指定定义文件。

  • Docker-compose使用YAML文件来定义多服务应用,YAML是json的子集,所以也可以用json编写。

  • 下面的例子包含两个服务:web-fe 和 redies 。此例子用来运行一个对访问者计数并保存到redies的简单web服务,🌰如下。

version: '3.5'
services:
  web-fe:
    build: .
    command: python app.py
    ports:
      - target: 5000
        published: 5000
    networks:
      - counter-net
    volumes:
      - type: volume
        source: counter-vol
        target: /code
  redis:
    image: "redis:alpine"
    networks: 
      counter-net:
networks:
  counter-net:
volumes:
  counter-vol:

结构分析

上述例子包含4个一级key:

  • version
    • 总是定义在第一行,用于指定compose文件格式(只要是API)的版本,建议使用最新版。
    • version不是定义Docker-compose或者docker引擎版本号。若有兼容性问题,搜索“Compose file”。
  • services:用于定义不同的应用服务,Docker Compose会将每个服务部署在各自容器中。 例子中有两个服务,也都将部署在各自的容器中
  • networks: 用于指引Docker创建新的网络,默认 Docker-compose会创建bridge网络,该网络是一种单主机网络,只能实现同一个主机上容器连接。(计算机网络基础是真的薄弱,后面会更新计算机网络的博客,暂时用下面张图理解下桥接)
    在这里插入图片描述想要修改网络模式,使用driver指定不同的网络类型。以下代码创建Overlay网络,允许独立的容器,连接到该网络上。
networks:
  over-net:
  driver: overlay
  attachable: true
  • volumes
    • 用于创建数据卷

接着分析一级key下面的描述

  • version
    • 服务名:
      • build: . 指定当前目录下的Dockerfile中定义的指令来构建新镜像
      • command:指定docker容器中执行的命令。
      • ports:指定-target的端口映射到主机的published端口
      • networks: 使得Docker将服务连接到指定网络。counter-net是自己取的网络的名字。我们可以看到web-fe和redies指定的网络名字是一样的,所以他们可以进行网络互通。如果该网络不存在,则需要在一级key中的networks定义。如果网络类型为Overlay,则还需要定义attachable,如此独立的两个容器才能互联。
      • volumes: 可以将vounter-vol卷(source:)挂载到容器内的/code(target:)中。vounter-vol卷如果不存在需要在文件下方一级key,volumes中指定。如何看数据卷存放位置,执行docker volume inspect [卷标名称]就可以看到。

docker-compose命令

启动docker-compose

docker-compose定义完毕后,接下来就看如何利用命令行进行使用吧。

docker-compose up
  • 该命令用于启动,执行定义文件中的内容,执行后会构建所需要的镜像,创建网络和卷,启动容器。
  • 该命令会默认查找docker-compose.yml文件,让然也可以指定yaml文件进行执行:docker-compose -f xxxxxx.yml up.
  • 在命令后添加-d 可在后台启动应用。

执行完毕后查看的镜像:
在这里插入图片描述

  • 其中counter-app_web-fe、redis是我们定义的服务产生的镜像,python是在构建web-fe过程中使用的基础镜像。
  • 这里提醒下,counter-app是项目名,web-fe是服务名,部署后构建的镜像名字会遵循 项目名_服务名这种规范。redis不是我们构建的,所以不用遵循。

查看启动的容器:在这里插入图片描述
查看网络:
在这里插入图片描述

查看数据卷:
在这里插入图片描述

至此,应用部署完毕。

使用命令行管理Docker Compose起的应用的生命周期

关闭删除应用:docker-compose down
在这里插入图片描述

  • 关闭应用做了一下几个动作:1、关闭启动的容器;2、定义的网络被删除;
  • 值得注意的是,数据卷没有被删除,卷的生命周期与容器是完全节后的,卷内的内容是原容器中的数据,当然也不会被删除。

显示服务内运行的进程:docker-compose top
在这里插入图片描述
停止应用docker-compose stop
在这里插入图片描述

  • 该命令只会停止任务,不会删除资源
    删除已停止的Compose应用:docker-compose rm 应用名

重启应用:docker-compose restart

————————————————————————————————————————
end:
晚安! my lovers,有你们狠幸福。

相关文章:

  • css实现input搜索框展开动画
  • 8.城市交通
  • 软件流程和管理(六):Project Scheduling
  • 2022-09-01 mysql/stonedb-多线程并行遍历元组遇到的问题分析
  • MATLAB | 面积图、饼状图、水平柱状图的斜线填充(阴影填充)
  • IDEA开发环境初始化配置
  • 企业单位公众号如何上传附件(如Word,Excel,PPT等)
  • Java中二维数组练习题
  • 一步到位,在Ubuntu中开启MySQL Windows Navicat能远程访问
  • 关于 Math.random()生成指定范围内的随机数的公式推导
  • 抛砖系列之git仓库拆分工具git-filter-repo
  • 基于51单片机温度监控Proteus仿真设计_报警值可调
  • 海关 瑞数5.5 找后缀加密入口解析
  • Cadence OrCAD Capture 绘制总线的方法
  • 高薪程序员面试题精讲系列145之前后端如何交互?Swagger你用过吗?
  • [译]CSS 居中(Center)方法大合集
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • IndexedDB
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java 最常见的 200+ 面试题:面试必备
  • python_bomb----数据类型总结
  • session共享问题解决方案
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Terraform入门 - 3. 变更基础设施
  • Vue 动态创建 component
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 给github项目添加CI badge
  • 说说我为什么看好Spring Cloud Alibaba
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (13):Silverlight 2 数据与通信之WebRequest
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .cfg\.dat\.mak(持续补充)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET下的多线程编程—1-线程机制概述
  • .NET业务框架的构建
  • .net知识和学习方法系列(二十一)CLR-枚举
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /var/spool/postfix/maildrop 下有大量文件
  • @angular/cli项目构建--Dynamic.Form
  • @Autowired @Resource @Qualifier的区别
  • [100天算法】-目标和(day 79)
  • [20170713] 无法访问SQL Server
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [DevOps云实践] 彻底删除AWS云资源
  • [docker] Docker的数据卷、数据卷容器,容器互联