共计 2305 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章主要讲解了“docker compose 与 docker stack 有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“docker compose 与 docker stack 有什么用”吧!
docker 在 1.12 的时候引入了 swarm mode,其中有个 stack 命令,看起来两者的功能差不多,但还有一点差异的:
docker compose:
compose 是 fig 演变而来,python 脚本,需要单独安装,compose 可以 build image,compose 需要单独安装,compose 更多是 dev 环境使用。
docker stack:
stack 被集成进 docker 原生 CLI,go 编写,不支持 build image。stack 更适合 docker cloud 环境,用来管理集群。
一个 stack 是一组 services 的集合,它可以使你的 app 运行在指定的环境,一个 stack 文件是一个 YAML 文件,YAML 文件中定义了一个或者多个 services,和 docker-compose.yml 文件很相似,但是和 compose 又有一点小扩展。两者虽然都使用 compose.yml 文件,但是里面的命令有一丢丢的差别,stack 只支持 swarm 模式下使用,只支持 compose V3 格式。
stack 配置项
image 该 image 用来部署该 service,这是唯一强制的 key
autodestroy 当 service 被 stop 的时候,container 应该是否被终止。默认是 no,可以有 no, on-success, always 三种
autoredeploy 当 image 在 updated 的时候,service 的 container 是否应该被自动重新部署,默认是 false
cap_add, cap_drop 增加或者删除容器的 acp 能力,可以通过 man 7 capabilities 来查看具体的能力
cgroup_parent 指定一个可选的父 cgroup
command 覆盖 image 中的 command 指令
deployment_strategy 容器在 node 上的分布,默认是 emptiest_node,可以是 emptiest_node, high_availability, every_node 三种。devices device mapping 列表,和 docker client 使用 --device 效果一样
dns 自定义 dns server,可以是一个地址,也可以是多个列表地址
dns_search 自定义 DNS search domains
environment 一个环境变量列表,会被增加到 service 的环境变量中,这里的定义会覆盖 image 中的环境变量定义。expose 暴露端口,但是不会发布到 host 上,它只是可以在你的 nodes 上可以访问
extra_hosts 增加 hostname 映射,和 docker client 的 --add-host 效果一样
labels 增加 container 的元数据。links 连接到其他 service 上
net 设置网络模式,默认只支持 bridge 和 host 模式
pid 设置 pid 模式,ports 暴露端口,格式是 HOST:CONTAINER,或者只指定 container 的端口,这样会在 host 上选择一个随机的端口
privileged 是否开启 container 和 docker engine 一样的权限,默认是 false
restart 当 service 被 stop 的时候是否重启 container,默认是 no,可以是 no, on-failure, always
roles 一个 docker api 的 roles 列表
security_opt 覆盖 container 的默认 labeling scheme
sequential_deployment 容器是否被应该逐一启动和扩展,默认是 false
tags 标明部署 tags,用来选择 nodes,以确定 container 运行在那个 nodes
target_num_containers 该 service 默认运行的 container 副本数,默认是 1
volumes 挂载的路径,格式是 HOST:CONTAINER,或者 HOST:CONTAINER:ro,指定访问模式
volumes_from 从另一个 service 挂载所有的 volumes
#和 docker run 共同的 key
working_dir: /app
entrypoint: /app/entrypoint.sh
user: root
hostname: foo
domainname: foo.com
mac_address: 02:42:ac:11:65:43
cpu_shares: 512
cpuset: 0,1
mem_limit: 100000m
memswap_limit: 200000m
privileged: true
read_only: true
stdin_open: true
tty: true
stack 不支持的配置项:build external_links env_file
感谢各位的阅读,以上就是“docker compose 与 docker stack 有什么用”的内容了,经过本文的学习后,相信大家对 docker compose 与 docker stack 有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!