Docker学习(六):Docker Compose和Docker Stack区别
作者: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区别相关推荐
- Docker学习六:综合实践
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- Docker学习总结(42)——Docker Compose 入门学习
一.Docker Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用(称为一个 project,即项目).Compose 定位是 ...
- Docker学习(六)-----Docker数据卷
十.Docker数据卷 问题:通过镜像创建一个容器,容器一旦被销毁,则容器内的数据将一并被删除,但有些情况下,通过服务器上传的图片出会丢失.容器中的数据不是持久化状态的. 那有没有一种独立于容器,提供 ...
- Docker学习总结(20)——Docker 容器实践精华问答集锦
问题一:请问如何做好容器的安全性管理?跨主机容器间通信如何来管理(比如:ip 分配,划vlan 等)?k8s对于容器的监控和集群管理,该如何来做? 精灵云:关于安全,容器自带一些安全技术比如Capab ...
- Docker 学习总结(74)—— Docker Swarm 全面总结
一.前言 Swarm 是 Docker 公司推出的用来管理 docker 集群的平台,几乎全部用 GO 语言来完成的开发的,代码开源在 https://github.com/docker/swarm: ...
- Docker学习总结(29)——Docker核心技术与实现原理
提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...
- docker学习笔记(二)docker常用命令
参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(三)镜像 docker学习笔记(四)使用docker搭建环境 docker学习 ...
- Docker学习(八):Docker可视化与监控
Docker可视化与监控 原始:docker stats查看容器使用内存.cpu等情况 1.轻量级Portainer Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Dock ...
- Docker学习笔记——(一)docker简介与docker安装
Docker简介与安装 1. Docker简介 docker是什么? docker架构原理 docker有什么用? docker容器与虚拟机的区别 虚拟机与Docker的体系结构说明: 整体对比: 2 ...
- docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服
文章目录 前言 docker镜像分层加载原理 docker镜像commit操作产生新镜像 本地镜像发布到阿里云 将本地镜像推送到私有库 前言 大家好,这是我学习docker系列的笔记文章,目标是掌握d ...
最新文章
- 成功解决If your current network has https://www.anaconda.com blocked, please filea support request with
- 人工智能:一种现代方法汇总
- 与Serverless 的第一次亲密接触
- 【C语言笔记进阶篇】第一章:指针进阶
- tomcat 无法关闭 :8005端口未启动
- 华为交换机重制_华为交换机重置命令
- html无序列表只能横着排吗,[三地连线走势图]css 怎样让无序列表 横着排列
- 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
- (轉載)HDMI之EDID字段解析
- 开源BI工具superset的安装使用
- 移动硬盘提示RAW的资料找到办法
- [Noi online-j]T1 切蛋糕
- 腾讯云通过公众号开通短信验证码
- 互联网“诸神”的排位赛,2016年会是转折点?
- 东大22春政治学概论X《政治学概论》在线平时作业2_100分满分非答案
- 数据库中数据的独立性解释
- 7000字,详解仓湖一体架构!
- mysql查询前几笔sql语句_mysql开发常用的几条sql查询语句
- 改善脑力的70条方法[翻译] 1
- 技术总监的校招之旅——分享校招全攻略指南(万字长文)
热门文章
- 解决zabbix_agent on Zabbix Server is unreachable fro 5 minutes不能正常启动的问题
- 网络请求 - 收藏集 - 掘金
- 远程教育实施方案交流之(一)——课件制作与课程录制篇
- linux的dev中有video,为啥我的/dev/video0打不开!
- excel根据一列相同的内容合并
- oiv 查看 Fsimage 文件和oev 查看 Edits 文件
- 多选字段mysql_多选字段如何存数据库
- laydate实现日期多选
- 华为p40手机是不是android,都是4G手机,为什么新款华为P40表现不如iPhone 11?
- 不知道从多少开始的Qt(QML)学习之旅(01)