docker stack,docker-compose前世今生

回顾

  《docker-compose真香》详细讲述docker-compose容器编排工具的用法,实际上容器编排yml文件在进化到版本3的时候,docker-compose更像是被定义为 适用于开发、测试环境的容器编排工具。

Docker引擎在1.12版本集成了Docker Swarm,内置新的容器编排工具docker stack,

① 使用方式雷同,都使用yml容器编排文件

$ docker-compose -f docker-compose up

$ docker stack deploy -c docker-compose.yml somestackname

② 作用大体相同:这两个工具命令都能操纵docker-compose.yml文件中定义的docker services、volumes 、networks资源。

现在无需另外安装docker-compose工具包, 就可以利用docker-compose.yml文件创建Docker容器堆栈。

但是为什么会引入新的docker stack 容器编排技术呢?docker-compose与docker stack除了语法,还有什么不同?

两者差异

docker stack仅针对docker-compose版本3容器编排文件,两者对docker-compose版本3指令稍有差异化,请在这个页面中搜索"ignore"查看更多细节。 

举例如下:

① docker stack不支持docker-compose中的“build”指令, 相比之下docker-compose可现场构建镜像,更适合迭代开发和CI

This "build" option is ignored when deploying a stack in swarm mode with a (version 3) Compose file. The docker stack command accepts only pre-built images.

② docker-compose不支持docker-compos版本3中deploy 指令,该指令定义了适用于生产部署的配置,deploy指令专属于docker stack.

deploy

  • endpoint_mode

  • labels

  • mode

  • placement

  • replicas

  • resources

  • restart_policy

  • rollback_config

  • update_config

  • Not supported for docker stack deploy

docker-compose版本2依旧有restart指令,对于生产部署来说支持不足,杯水车薪。

 可以渐渐理解两者差异的趋势:

- docker-compose更像是被定义为单机容器编排工具;

- docker stack被定义为适用于生产环境的编排方式,强化复制集、容器重启策略、回滚策略、服务更新策略等生产特性。

docker stack强化service的概念:服务可理解为发布到生产环境时某组容器的预期状态 

前世

docker-compose是一个Python项目,最初有一个名叫fig的Python项目能够解析fig.yml并启动docker容器堆栈, 这个工具慢慢产品化并被改名为docker-compose,但是docker-compose始终是一个Python工具,作用在Docker引擎的顶层;使用Docker API根据规范启动容器,必须单独安装docker-compose工具包才能将其与Docker一起使用。

docker stack的能力来源自docker引擎原生支持,你不需要安装额外工具包就可启动docker容器堆栈(docker stack 是docker swarm的一部分)。

docker stack支持与docker-compose相似的能力,但是在Docker引擎内Go语言环境中运行的,在使用docker stack命令之前你还必须创建一个swarm节点(这也不是问题)。

今生

docker stack, docker-compsoe两者对yml版本3文件刻意形成差异化支持。

为什么docker公司要强化docker stack,因为docker stack是进阶docker swarm的必经之路;docker stack可认为是单机上的负载均衡部署,可认为是多节点集群部署(docker swarm)的特例。

画外音:希望开发者上手docker stack用于生产部署,自然过渡到docker swarm,不然跟kubernetes怎么竞争?

总结

docker stack、docker-compose工具都可以使用版本3编写的docker-compose.yml文件。(版本3之前的docker-compose.yml文件可继续使用docker-compose工具)

如果你仅需要一个能操作多个容器的工具,依旧可以使用docker-compose工具。

因为docker stack几乎能做docker-compose所有的事情,如果你打算使用docker swarm集群编排,或者生产下的容器部署,可尝试迁移到docker stack。

》修改为适用于docker satck的docker-compose.yml文件,也不会花很多时间。

+  https://docs.docker.com/compose/compose-file/

+  https://www.cnblogs.com/JulianHuang/p/10919346.html

+  https://www.cnblogs.com/JulianHuang/p/11641040.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker Compose是一个描述和运行多个Docker容器的工具,而Docker Swarm是一个Docker原生的集群管理工具,可以方便地管理多个Docker节点。在Docker Swarm集群中使用Docker Compose可以快速地构建和部署服务。 以下是在Docker Swarm集群中使用Docker Compose部署服务的一些步骤: 1. 编写Docker Compose文件:在本地编写一个Docker Compose文件,描述需要运行的服务、镜像和配置等信息。例如,下面是一个简单的Docker Compose文件: ``` version: '3.7' services: web: image: nginx:alpine deploy: replicas: 2 resources: limits: cpus: '0.5' memory: 512M restart_policy: condition: on-failure ports: - "80:80" - "443:443" ``` 2. 上传Docker Compose文件:将Docker Compose文件上传到Swarm集群管理节点。 3. 部署服务:使用`docker stack deploy`命令部署服务,例如: ``` docker stack deploy --compose-file docker-compose.yml my-app ``` 其中,`--compose-file`参数指定了使用的Docker Compose文件,`my-app`是服务的名称。 4. 验证服务:使用`docker service ls`命令可以查看部署的服务列表,使用`docker service ps <service>`命令可以查看服务的运行状态。 ``` docker service ls docker service ps my-app_web ``` 以上就是在Docker Swarm集群中使用Docker Compose部署服务的一些步骤。通过使用Docker Compose可以快速地构建和部署服务,而Docker Swarm可以方便地管理和扩展服务,两者结合使用可以大大提高服务的可靠性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有态度的马甲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值