docker compose VS 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

 

 

 

转载于:https://my.oschina.net/guol/blog/1377534

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值