docker compose与docker stack有什么用
更新:HHH   时间:2023-1-7


这篇文章主要讲解了“docker compose与docker stack有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!

返回云计算教程...