docker-compose 文件配置选项

Docker compose 文件可用来配置 Docker 服务,它的默认路径是 ./docker-compose.yml(也可使用 .yaml 后缀)。正如 docker run 一样,在 Dockerfile 中指定的指令(如 CMD、EXPOSE 等),也就没必要在 docker-compose.yml 中再指定一遍。另外,也可以在配置值中使用 ${varname} 这样的语法来使用环境变量。还有 YAML 中的布尔值类型 true、false、on、off、yes、no 需要使用引号引起来,以便把它们当成字符串解析。
接下来描述的就是版本 3 中用来定制服务的 Compose 文件格式的配置选项,具体用法见官方版[url]https://docs.docker.com/compose/compose-file/[/url]。
** build
该选项会在构建时刻使用。它可以是指定了构建上下文的路径字符串,也可以是含有 contex 选项和其他可选项的对象(两者取其一)。build 有下面几个子选项:
1、context:该选项可以是一个包含了 Dockerfile 的目录路径,也可以是一个 git 仓库地址。如果是一个相对路径,则是相对于 docker-compose.yml 的位置而言的。它的值会被当成构建上下文传给 Docker 守护进程。
2、dockerfile:用来指定替换的 Dockerfile 路径,须要同时指定 context 选项。
3、args:指定构建参数的值。首先要在 Dockerfile 中指定参数名,然后再使用该选项指定参数值。它的值可以是一个映射或列表,也可以忽略(这时它的值取自运行 compose 文件时的环境)。
4、cache_from:指定引擎解析缓存时要使用的镜像列表。
5、labels:使用 Docker Labels 为最终的镜像添加元数据,值为映射或列表形式。
** cap_add, cap_drop
用于添加或删除容器功能(可用 man 7 capabilities 查看完整功能列表。注意,在版本 3 的 compose 文件中,当使用 swarm 模式部署栈时,该选项会被忽略)。
** command
用于覆盖默认命令。值可以是普通字符串或是类似于 Dockerfile 中的数组形式。
** configs
为服务指定要使用的配置,并挂载到容器中的 /dst_config_name 下。指定的配置名需要在顶层范围的 configs 中指明。支持短语法和长语法。短语法中 dst_config_name 就是配置名,长语法中可以使用 source 指定配置名,使用 target 指定 dst_config_name,使用 uid 和 gid 指定用户 ID 和组 ID,使用 mode 指定 dst_config_name 的文件访问权限(写权限会被忽略,因为配置文件是挂载到临时文件系统中的)。
** cgroup_parent
为容器指定一个可选的所属组(当以 swarm 模式部署栈时该选项会被忽略)。
** container_name
自定义容器名(当以 swarm 模式部署栈时该选项会被忽略)。
** credential_spec
为所管理的服务账户配置证书规则。仅用于使用 Windows 类容器的服务。
** deploy
指定与服务部署相关的配置。它仅在使用 docker stack deploy 命令部署到一个 swarm 时才会生效,并且会被 docker-compose up 和 docker-compose run 忽略。它支持下面多个子选项。
1、 endpoint_mode:为连接到服务的外部客户端指定服务发现的方式。有两种方式:
a)vip:由 Docker 为服务赋一个虚拟 IP。Docker 会自动为客户端和服务工作节点选择合适的路由。这是默认的方式。
b)dnsrr:使用 DNS 服务发现。Docker 会为服务创建一个 DNS 项,以便使用服务名进行 DNS 查询时能连接到合适的 IP。该选项在你想使用自己的负载均衡器等情况下时是有用的。
2、labels:为服务(而非容器)设置标签。
3、mode:可为 global(每个 swarm 节点只有一个容器)或者 replicated(可有多个容器,默认)。
4、placement:指定布置约束。
5、replicas:当 mode 为 replicated 时,指定要运行的容器的数量。
6、resources:配置内存、CPU 等资源限制。
7、restart_policy:配置如何重启退出的容器。可以为下面一个或多个值:
a)condition:值为 none、on-failure 或者 any 之一,默认为 any。
b)delay:在下次尝试重启之前需要等待的时间,默认为 0。
c)max_attempts:最多尝试重启的次数,默认从不放弃。
d)window:判定一次重启失败前要等待的时间,默认立即判定。
8、update_config:配置如何更新服务。可以为下面一个或多个值:
a)parallelism:每次要更新的容器数量。
b)delay:更新下一组容器前要等待的时间。
c)failure_action:更新失败时要采取的动作。为 continue、rollback 或 pause 之一,默认为 pause。
d)monitor:判定一次更新失败前要持续的时间,默认为 0s。
e)max_failure_ratio:能容忍的最大更新失败率。
** devices
指定设备映射列表。
** depends_on
指出服务之间的依赖关系。
** dns
自定义 DNS 服务。
** dns_search
自定义 DNS 搜索域。
** tmpfs
在容器中挂载一个临时文件系统。
** entrypoint
覆盖默认的入口。注意,设置该选项将覆盖 Dockerfile 中使用 ENTRYPOINT 指令为服务镜像设置的默认入口,同时也会清除使用 CMD 指令设置的默认命令。
** env_file
指定环境变量文件。如果使用 docker-compose -f FILE 指定了一个 Compose 文件,则 env_file 中指定的文件就是相对于那个文件所在的目录而言的。另外,使用 environment 选项定义的环境环境变量将会覆盖这些文件中定义的同名变量。注意,build 选项不能读取这些文件 和 environment 定义的环境变量,而应该使用 build 的子选项 args 来代替。
** environment
添加环境变量。值可以是一个列表或映射。其中涉及的 boolean 值(如 true/false 和 yes/no)都需要用引号引起来,以免被 YML 解析器转换为 True 和 False。只指定了键的环境变量的值会被解析为机器运行时的对应值,这可用来指定比较敏感或与机器相关的信息。
** expose
暴露端口,但不向主机公布,因此只能被链接的服务访问。只有内部端口才可这样设置。
** external_links
关联到 Compose 之外启动的容器,尤其是那些提供了共享和常用服务的容器。
** extra_hosts
添加主机名映射。使用与 docker 客户端的 --add-host 参数相同的值,同时还要在提供服务的容器的 /etc/hosts 文件中指明该映射关系。
** healthcheck
配置如何检测运行服务的容器的“健康值”。
** image
指定容器所使用的镜像。
** isolation
指定容器的隔离技术。Windows 上支持的值有:default、process 和 hyperv,Linux 上仅支持 default。
** labels
使用 Docker 标签为容器添加元数据。
** links
关联另一个服务中的容器。如果同时指定了该选项和 networks 选项,那个关联的服务之间应该至少要有一个共同的网络才能相互通信。
** logging
配置服务日志。
** network_mode
指定网络模式。注意“network_mode: "host"”不能与 links 选项合用。
** networks
指定服务要加入的网络,这些网络也应该在顶级范围中使用 networks 指明。它支持下面 几个子选项:
1、aliases:创建服务在某个网络下的别名列表,这样该网络中的其他容器除了使用服务名(默认的)外还可使用别名访问该服务中的容器。
2、ipv4_address/ipv6_address:为加入到该网络的服务指定一个静态 IP。这时在顶级范围中创建该网络时应该包含一个 ipam 选项块,用以配置子网部分。如果要支持 IPv6,还应该指定 enable_ipv6 选项。
** pid
设置 pid 模式为主机 pid 模式。这会让容器和主机共享 PID 地址空间。
** ports
用来公布容器端口。
** secrets
配置服务对某些敏感数据的访问权限。服务范围下的该选项应该与顶层范围下的 secrets 选项同时指定。
** security_opt
覆盖每个容器的默认标记方案。
** stop_grace_period
指定在发送 SIGKILL 信号前,如果没对 SIGTERM 信号(或其他使用 stop_signal 选项设置的停止信号)进行处理时试图停止一个容器要等待的时间限制,默认为 10s。
** stop_signal
设置停止容器时要发送的信号,默认为 SIGTERM。
** sysctls
指定容器中要设置的内核参数。
** ulimits
覆盖容器的默认资源限制。
** userns_mode
禁用此服务的用户命名空间(如果有的话)。
** volumes
指定服务要使用的卷。如果仅针对某一服务,可以只指定卷主机路径。但若要多个服务使用,应该使用在顶层范围下的 volumes 选项中指定的卷名。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值