跳到主要内容

指令

2024年07月07日
柏拉文
越努力,越幸运

一、version


version 指定本 yml 依从的 compose 哪个版本制定的。

二、services


services 容器

三、build


build 指定为构建镜像上下文路径

语法

services:
serviceName1:
build:
context: .
dockerfile: Dockerfile // 基于当前目录下的 Dockerfile 构建镜像

四、cap_add,cap_drop


cap_add,cap_drop 添加或删除容器拥有的宿主机的内核功能。

五、cgroup_parent


cgroup_parent 为容器指定父 cgroup 组,意味着将继承该组的资源限制。

六、ports


ports 相当于 docker run -p 中的 -p

语法

services:
serviceName1:
ports:
- 8080:80 // 将容器的 80 端口转发映射到宿主机的 8080 端口, 同 docker run -p 8080:80

七、command


command 覆盖容器启动的默认命令。

语法

services:
serviceName1:
image: xxx:Tag
command: xxxx xxx

八、container_name


container_name 指定自定义容器名称,而不是生成的默认名称。

语法

services:
serviceName1:
image: [镜像名称:Tag]
container_name: xxx

九、depends_on


depends_on 设置依赖关系。

十、deploy


deploy 指定与服务的部署和运行有关的配置。只在 swarm 模式下才会有用。

十一、devices


devices 指定设备映射列表。

十二、dns


dns 自定义 DNS 服务器,可以是单个值或列表的多个值。


dns_search 自定义 DNS 搜索域。可以是单个值或列表。

十四、entrypoint


entrypoint 覆盖容器默认的 entrypoint

十五、env_file


env_file 从文件添加环境变量。可以是单个值或列表的多个值。

十六、environment


environment 添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 TrueFalse

语法

services:
serviceName1:
image: [镜像名称:Tag]
container_name: xxx
environment:
- xxx1=yyy1
- xxx2=yyy2

十七、expose


expose 暴露端口,但不映射到宿主机,只被连接的服务访问。

十八、extra_hosts


extra_hosts 添加主机名映射。类似 docker client --add-host

十九、healthcheck


healthcheck 用于检测 docker 服务是否健康运行。

语法

services:
serviceName1:
image: 镜像名称:[Tag]
container_name: xxx
healthcheck:
test: ["CMD","curl","-f","http://localhost"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

二十、image


image 指定容器运行的镜像。

语法

services:
serviceName1:
image: [镜像名称:Tag]
container_name: xxx

二十一、logging


logging 服务的日志记录配置。

二十二、network_mode


network_mode 设置网络模式。

二十三、restart


restart

二十四、secrets


secrets 存储敏感数据

二十五、security_opt


security_opt 修改容器默认的 schema 标签。

二十六、stop_grace_period


stop_grace_period 指定在容器无法处理 SIGTERM (或者任何 stop_signal 的信号),等待多久后发送 SIGKILL 信号关闭容器。

二十七、stop_signal


stop_signal 设置停止容器的替代信号。默认情况下使用 SIGTERM

二十八、sysctls


sysctls 设置容器中的内核参数,可以使用数组或字典格式。

二十九、tmpfs


tmpfs 在容器内安装一个临时文件系统。可以是单个值或列表的多个值。

三十、ulimits


ulimits 覆盖容器默认的 ulimit

三十一、volumes


volumes 将主机的数据卷或者文件挂载到容器里。

语法

services:
serviceName1:
volumes:
- ~/docker/xx1:/zz1 // 将容器 zz1 目录挂载到宿主机 ~/docker/xx1 ,相当于 docker run -v ~/docker/xx1:/zz1
- ~/docker/xx2:/zz2 // 将容器 zz2 目录挂载到宿主机 ~/docker/xx2 ,相当于 docker run -v ~/docker/xx2:/zz2
services:
serviceName1:
……
serviceName2:
……

volumes:
……

三十二、networks


networks

语法

services:
serviceName1:
ports:
- xxxx:yyyy
networks:
- xxxx1 // 指定容器网络为 xxxx , 相当于 docker run --network xxxx
- xxxx2

networks:
xxxx1:
driver: bridge / default // 创建自定义网络 xxxx , 并指定网络模式为 bridge , 相当于 docker network create -d bridge xxxx
xxxx2:
ipam:
driver: bridge / default
config:
- subnet: 127.28.0.0/16

三十二、depends_on


depends_on 用来定义容器启动顺序

语法: 若 服务B 依赖于 服务A, 那么 服务 A 必须先于 服务B 启动成功, 语法如下

services:
serviceA:
image: imageA:Tag
serviceB:
image: imageB:Tag
depends_on:
- serviceA // serviceA 启动成功后,启动B , 不管 serviceA 服务是否有效
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 3s
retries: 3
serviceC:
image: imageC:Tag,
depends_on:
serviceB:
condition: service_healthy // 当 serviceB 服务处于 healthy 时, 才可以启动 serviceC