Docker-compose

Docker三剑客

Compose

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式

Compose

在这里插入图片描述

Compose文件格式

一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分,下面先来看 services 的书写规则。

Compose启动两个nginx容器

在这里插入图片描述

image

在这里插入图片描述
在 services 标签下的第二级标签是 web,这个名字是用户自己自定义,它就是服务名称。
image 则是指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
例如下面这些格式都是可以的:在这里插入图片描述

container_name:容器的名字

build

服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。
在这里插入图片描述
也可以是相对路径,只要上下文确定就可以读取到 Dockerfile

command

使用 command 可以覆盖容器启动后默认执行的命令。
command: nginx –g daemon off;
command: [nginx,-g,daemon off;]

depends_on

在使用 Compose 时,最大的好处就是少打启动命令,但是一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,必然会因为容器依赖问题而启动失败。
例如在没启动数据库容器的时候启动了应用容器,这时候应用容器会因为找不到数据库而退出,为了避免这种情况我们需要加入一个标签,就是 depends_on,这个标签解决了容器的依赖、启动先后的问题。

depends_on

例如下面容器会先启动 redis 和 db 两个服务,最后才启动 web 服务:

在这里插入图片描述
注意的是,默认情况下使用 docker-compose up web 这样的方式启动 web 服务时,也会启动 redis 和 db 两个服务,因为在配置文件中定义了依赖关系。

links

还记得上面的depends_on吧,那个标签解决的是启动顺序问题,这个标签解决的是容器连接问题,与Docker client的–link一样效果,会连接到其它服务中的容器。
在这里插入图片描述

dns

指定DNS
格式
dns: 8.8.8.8
也可以是一个列表:
dns:
  - 8.8.8.8
  - 9.9.9.9

entrypoint

在 Dockerfile 中有一个指令叫做 ENTRYPOINT 指令,用于指定接入点,我们之前有对比过与 CMD 的区别。在 docker-compose.yml 中可以定义接入点,覆盖 Dockerfile 中的定义:在这里插入图片描述

expose

这个标签与Dockerfile中的EXPOSE指令一样,用于指定暴露的端口,但是只是作为一种参考,实际上docker-compose.yml的端口映射还得ports这样的标签。
在这里插入图片描述

ports

映射端口的标签。
使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口
在这里插入图片描述

volumes

挂载一个目录或者一个已存在的数据卷容器
volumes:
- /var/lib/mysql #挂载匿名卷
- /opt/data:/var/lib/mysql #将宿主机的目录挂载到容器
- datavolume:/var/lib/mysql #将数据卷datavolume挂载到容器

network_mode

网络模式,与Docker client的–net参数类似
network_mode: “bridge”
network_mode: “host”
network_mode: “none”

environment

环境变量设置,可使用数组或字典两种方式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值