回顾

  《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

② 作用大体相同: 两机制都能操纵 compose.yml文件中定义的 services、volumes 、networks资源。

另外由于docker swarm内置,所以可不需要安装docker-compose 工具

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

两者差异

请在这个页面中搜索 “ignore” 查看更多细节。

举例如下:

① docker stack 不支持 compose file中的“build”指令, 相比之下docker-compose可现场创建镜像,更适合迭代开发、测试和 快速验证原型

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 不支持 compos版本3中 deploy配置节(定义适用于生产部署的配置), 这个deploy配置节专属于docker stack.

deploy

compose v2依旧有 restart指令, 对于生产部署支持不足、杯水车薪。

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

前世

docker-compose是一个Python项目。 最初有一个名叫fig的Python项目能够解析 fig.yml——>启动docker 容器堆栈,很多人都很喜欢这个工具,尤其是github上fork 这个项目的forkers, 这个工具慢慢产品化并被改名为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 不支持版本2规范编写的compose.yml文件,必须使用最新的V3 版本。docker-compose工具依然可以处理版本2,3(如上所述,会忽略掉不再适用于该工具的某些指令)。

今生

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

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

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

为什么docker公司要强化docker stack, 因为docker stack是进阶docker swarm 的必经之路,

docker stack 可认为是单机上的负载均衡部署; 可认为是多节点集群部署(docker swarm)的特例。

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

结论

docker-compose、docker stack工具命令都可以使用版本3编写的docker-compose.yml 文件上,版本3之前的docker-compose.yml 文件可继续使用docker-compose工具,

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

因为docker stack几乎能做docker-compose所有的事情 (生产部署docker stack表现还更好),如果你打算使用docker swarm集群编排,可尝试迁移到docker stack。

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

【翻译】Docker Compose 与Docker Stack的不同的更多相关文章

  1. Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别

    Dcoker Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我 ...

  2. Docker compose 与 Docker swarm

    安装 docker :https://www.cnblogs.com/klvchen/p/8468855.html 安装 docker-compose : https://www.cnblogs.co ...

  3. Docker 核心技术之Docker Compose

    Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...

  4. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  5. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  6. docker compose 用法

    目录 docker compose的使用场景 一个基本的demo演示 找一个目录,在其中创建一个python文件app.py 在相同的文件夹下,创建requirements.txt文件 在相同的文件夹 ...

  7. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  8. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

  9. Docker Compose 简介

    Compose 是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用.使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建 ...

随机推荐

  1. excache.xml作用

    name:缓存名称. maxElementsInMemory:缓存最大个数. eternal:对象是否永久有效,一但设置了,timeout将不起作用. timeToIdleSeconds:设置对象在失 ...

  2. C#数据结构_查找

    查找:静态查找和动态查找. 衡量查找算法的最主要的标准是平均查找长度(Average Search Length,简 称 ASL).平均查找长度是指在查找过程中进行的关键码比较次数的平均值. 顺序查找 ...

  3. ElasticSearch:组合查询或复合查询

    Bool查询 允许在单独的查询中组合任意数量的查询,指定的查询语句表名哪些部分是必须匹配(must).应该匹配(should)或不能匹配(must_not) Bool过滤器 和查询功能一致,但是同等情 ...

  4. Github资源下载

    自己收集的一些日常使用软件.编程书籍以及自己动手实践的程序,欢迎下载. 收集维护不易,喜欢请Star或Fork支持呀,(^-^)V. 所有资源均自己制作或收集自网络,如有侵权请联系删除. 友情链接 G ...

  5. 分清<url-pattern>/</url-pattern>与<url-pattern>/*</url-pattern>的不同

    在写springMVC配置web.xml的时候会碰到下面有时候写/,有的时候又写/: 那么这两者有什么区别呢?我现在进行一些讲解: 1.当配置<url-pattern>/</url- ...

  6. Spring Cloud Alibaba | Nacos动态网关路由

    Spring Cloud Alibaba | Gateway基于Nacos动态网关路由 本篇实战所使用Spring有关版本: SpringBoot:2.1.7.RELEASE Spring Cloud ...

  7. HTML(三)链接,<head>,css样式

    HTML链接 HTML 超链接 一个未访问过的链接显示为蓝色字体并带有下划线 访问过的链接显示为紫色并带有下划线 点击链接时,链接显示为红色并带有下划线 注意:如果为这些超链接设置了 CSS 样式,展 ...

  8. CF1025C Plasticine zebra 思维 字符串

    Plasticine zebra time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  9. CodeForces Round 525

    A:Ehab and another construction problem #include<bits/stdc++.h> using namespace std; #define F ...

  10. 洛谷 P4206 [NOI2005]聪聪与可可 题解

    题面 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...