1、docker-compose.yml文件指令配置上
Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行编排管理。
Docker stack 也是一个yaml文件,和一份docker-compose.yml文件差不多,指令也基本一致。但是与compose相比其不支持build、links和network_mode。Docker stack有一个新的指令deploy。
stack不支持的配置指令:
- build
- cgroup_parent
- container_name
- devices
- tmpfs
- external_links
- links
- network_mode
- restart
- security_opt
- stop_signal
- sysctls
- userns_mode
Deploy是用来指定swarm服务部署和运行时的相关配置,并且只有使用docker stack deploy 部署swarm集群时才会生效。如果使用docker-compose up 或者docker-compose run时,该选项会被忽略。要使用deploy选项,compose-file中version版本要在3或3+。
2、适用场景上
Docker stack会忽略了“build”指令。 无法使用stack命令自动构建新镜像。 它是需要镜像是预先已经构建好的。 所以docker-compose更适合于开发场景,而stack更适合使用于服务部署
stack是包含在docker引擎内部,你不需要安装额外的工具包去启动docker 容器堆栈 docker stack 属于 docker swarm的一部分
docker-compose.yml 是基于第二版写的(在docker-compose.yml中指定version: “2”),而Docker stack是不支持的。必须使用最新版本,也就是version版本至少为3.然而Docker Compose对版本为2和3的文件都有可以处理。
3、推荐
https://vsupalov.com/difference-docker-compose-and-docker-stack/