docker stack,docker-compose前世今生

简介: 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-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文件,也不会花很多时间。

相关文章
|
13天前
|
应用服务中间件 nginx Docker
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
28 5
|
1月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
43 4
|
1月前
|
缓存 Kubernetes 应用服务中间件
1分钟了解什么是docker和docker-compose?前后端必知必会技能GET啦
1分钟了解什么是docker和docker-compose?前后端必知必会技能GET啦
|
4月前
|
应用服务中间件 nginx Docker
docker service 与 docker stack
docker service 与 docker stack
88 0
|
6月前
|
NoSQL Unix MongoDB
【docker 】docker-compose 部署mongoDB
【docker 】docker-compose 部署mongoDB
204 1
|
6月前
|
Ubuntu Shell 网络安全
【专栏】在Ubuntu 22.04上安装KubeSphere的指南:确保系统至少有4GB内存和2核CPU,安装Docker和docker-compose
【4月更文挑战第28天】在Ubuntu 22.04上安装KubeSphere的指南:确保系统至少有4GB内存和2核CPU,安装Docker和docker-compose。下载安装脚本`curl -sSL https://kubesphere.io/install.sh | bash`,根据提示选择安装选项,等待完成。安装后,通过访问控制台验证安装效果。解决可能出现的错误、网络问题和性能问题,利用KubeSphere提升容器管理效率。本文为顺利安装和使用提供参考。
283 0
|
运维 网络协议 调度
docker swarm 集群服务编排部署指南(docker stack)
docker swarm 集群服务编排部署指南(docker stack)
961 0
|
NoSQL Redis Docker
【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)下
【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)
243 0
|
存储 NoSQL Redis
【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)上
【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)
213 0
|
6月前
|
NoSQL Redis Docker
Docker Compose、Swarm、Stack、Secret、Config
Docker Compose、Swarm、Stack、Secret、Config
212 0
下一篇
无影云桌面