作者:water_lang
链接:https://www.jianshu.com/p/05be80475bff

在最近的发布版本中,Docker圈发生了一些事情。 Swarm模式已经在1.12中集成到Docker Engine中,并给我们带来了几个新工具。 其中,我们可以在不安装Docker Compose的情况下,可以使用docker-compose.yml文件来提供堆栈的Docker容器。

这个命令就是docker stack,它看起来与docker-compose完全相同。 这是一个他们的用法比较:
$ docker-compose -f docker-compose up

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

他们确实很相似。 这两个都将提供所有服务,卷,网络和其他所有内容,就像docker-compose.yml文件中指定的那样。但为什么要这样,并且docker stack与Docker Compose有什么不同呢? 为什么要介绍它? 除了语法之外,我们还须要知道些什么呢?

不同点

Docker stack会忽略了“构建”指令。 您无法使用stack命令构建新镜像。 它是需要镜像是预先已经构建好的。 所以docker-compose更适合于开发场景。

还有一些compose-file规范被docker-compose或stack命令忽略。 (搜索“忽略”可以查看更多详细信息)。

Docker Compose是一个Python项目。 最初,有一个名为fig的Python项目,用于解析fig.yml文件,你猜对了 - 堆栈的Docker容器。每个人都喜欢它,特别是Docker的追随者,最后它慢慢的融入了docker产品中。但它仍然在Python中,运行在Docker引擎之上。

在内部,它使用Docker API规范来操作容器。所以您仍然需要分别安装Docker -compose,以便与Docker一起在您的计算机上使用。

Docker Stack功能包含在Docker引擎中。你不需要安装额外的包来使用它,docker stacks 只是swarm mode的一部分。它支持相同类型的compose文件,但实际的处理是发生在Docker Engine(docker引擎)内部的Go代码中。 在使用堆栈命令之前,还必须创建一个单机版的“swarm”,但这并不是什么大问题。

如果你的docker-compose.yml 是基于第二版写的(在docker-compose.yml中指定version: “2”),那么Docker stack是不支持的。你必须使用最新版本,也就是version版本至少为3.然而Docker Compose对版本为2和3的 文件仍然可以处理。

总结

docker-compose和新命令docker stack commands都可以处理版本号为3的docker-compose.yml文件。对于版本号为2的文件,你不得不继续使用docker-compose. 如果你想升级,也不需要做太多的工作。

由于docker stack把docker compose的所有工作都做完了,因此可以肯定docker stack将占主导地位。这意味着docker-compose可能会被弃用,最终不会被支持。

然而,对于大多数用户来说,切换到使用docker stack既不困难,也不需要太多的开销。 您可以在将docker compose从版本2升级到版本3的同时轻松完成。

如果您是Docker新手,或正在选择用于新项目的技术 - 无论如何,请坚持使用docker stack deploy。

Docker学习(六):Docker Compose和Docker Stack区别相关推荐

  1. Docker学习六:综合实践

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  2. Docker学习总结(42)——Docker Compose 入门学习

    一.Docker Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用(称为一个 project,即项目).Compose 定位是 ...

  3. Docker学习(六)-----Docker数据卷

    十.Docker数据卷 问题:通过镜像创建一个容器,容器一旦被销毁,则容器内的数据将一并被删除,但有些情况下,通过服务器上传的图片出会丢失.容器中的数据不是持久化状态的. 那有没有一种独立于容器,提供 ...

  4. Docker学习总结(20)——Docker 容器实践精华问答集锦

    问题一:请问如何做好容器的安全性管理?跨主机容器间通信如何来管理(比如:ip 分配,划vlan 等)?k8s对于容器的监控和集群管理,该如何来做? 精灵云:关于安全,容器自带一些安全技术比如Capab ...

  5. Docker 学习总结(74)—— Docker Swarm 全面总结

    一.前言 Swarm 是 Docker 公司推出的用来管理 docker 集群的平台,几乎全部用 GO 语言来完成的开发的,代码开源在 https://github.com/docker/swarm: ...

  6. Docker学习总结(29)——Docker核心技术与实现原理

    提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...

  7. docker学习笔记(二)docker常用命令

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(三)镜像 docker学习笔记(四)使用docker搭建环境 docker学习 ...

  8. Docker学习(八):Docker可视化与监控

    Docker可视化与监控 原始:docker stats查看容器使用内存.cpu等情况 1.轻量级Portainer Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Dock ...

  9. Docker学习笔记——(一)docker简介与docker安装

    Docker简介与安装 1. Docker简介 docker是什么? docker架构原理 docker有什么用? docker容器与虚拟机的区别 虚拟机与Docker的体系结构说明: 整体对比: 2 ...

  10. docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服

    文章目录 前言 docker镜像分层加载原理 docker镜像commit操作产生新镜像 本地镜像发布到阿里云 将本地镜像推送到私有库 前言 大家好,这是我学习docker系列的笔记文章,目标是掌握d ...

最新文章

  1. 成功解决If your current network has https://www.anaconda.com blocked, please filea support request with
  2. 人工智能:一种现代方法汇总
  3. 与Serverless 的第一次亲密接触
  4. 【C语言笔记进阶篇】第一章:指针进阶
  5. tomcat 无法关闭 :8005端口未启动
  6. 华为交换机重制_华为交换机重置命令
  7. html无序列表只能横着排吗,[三地连线走势图]css 怎样让无序列表 横着排列
  8. 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
  9. (轉載)HDMI之EDID字段解析
  10. 开源BI工具superset的安装使用
  11. 移动硬盘提示RAW的资料找到办法
  12. [Noi online-j]T1 切蛋糕
  13. 腾讯云通过公众号开通短信验证码
  14. 互联网“诸神”的排位赛,2016年会是转折点?
  15. 东大22春政治学概论X《政治学概论》在线平时作业2_100分满分非答案
  16. 数据库中数据的独立性解释
  17. 7000字,详解仓湖一体架构!
  18. mysql查询前几笔sql语句_mysql开发常用的几条sql查询语句
  19. 改善脑力的70条方法[翻译] 1
  20. 技术总监的校招之旅——分享校招全攻略指南(万字长文)

热门文章

  1. 解决zabbix_agent on Zabbix Server is unreachable fro 5 minutes不能正常启动的问题
  2. 网络请求 - 收藏集 - 掘金
  3. 远程教育实施方案交流之(一)——课件制作与课程录制篇
  4. linux的dev中有video,为啥我的/dev/video0打不开!
  5. excel根据一列相同的内容合并
  6. oiv 查看 Fsimage 文件和oev 查看 Edits 文件
  7. 多选字段mysql_多选字段如何存数据库
  8. laydate实现日期多选
  9. 华为p40手机是不是android,都是4G手机,为什么新款华为P40表现不如iPhone 11?
  10. 不知道从多少开始的Qt(QML)学习之旅(01)