【问题标题】:Docker Swarms and Stacks: What's the difference?Docker Swarms 和 Stacks:有什么区别?
【发布时间】:2017-11-13 23:40:17
【问题描述】:

我刚刚阅读了 Docker 出色的 Getting Started 指南,只是想确认我了解基本的 Docker 用语,然后再继续深入。这些定义在某种程度上在文档中提供,但其中很多文档都是基于示例的,没有给出以下概念的具体形式。

因此,我的理解是:

  • 服务:Docker 服务是应用程序的不同组件:前端可能是 React UI,后端可能是 Spring Boot Web 服务,您可能有一个 MySQL DB 以及一个 RabbitMQ 代理;这些都是不同的服务,都包含您的应用程序。
  • 集群:Docker 集群是指您有一个 Swarm 为跨 2 个以上 Docker 主机的应用程序管理 1 个以上服务;集群只是指运行服务容器的所有 Docker 主机。
  • Compose:Docker Compose 是一种用于管理服务、群和堆栈的工具。
  • 堆栈:当 Swarm 管理器在给定集群上为给定应用程序管理 多个服务的多个 Swarm 时,就会出现 Docker 堆栈;因此,Swarm 和 Stack 之间的区别在于,Swarm 仅适用于单个 Service,而 Stack 管理多个 Swarm,因此多个 Service 都构成一个可扩展的分布式应用程序。

所以我问:我对这些基本术语的理解是正确的还是在某种程度上被误导了?

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-stack


    【解决方案1】:

    服务:Docker 服务是应用程序的不同组件...

    服务是 docker swarm 为您管理的图像。你可能会要求它运行这个镜像的三个实例,docker swarm 会这样做(如果可以的话)。

    Docker Hub 显示您可以运行的所有不同图像。

    集群:Docker 集群是指您有一个 Swarm 为跨 2 个以上 Docker 主机的应用程序管理 1 个以上服务;集群只是指运行服务容器的所有 Docker 主机。

    是的。集群由节点组成,这些节点要么是工作人员(运行服务),要么是管理人员(控制跨节点的服务调度)。请注意,一个节点既可以是工作人员,也可以是管理人员。

    我仍在考虑经理,但我认为您的目标应该是至少有 3 个奇数,否则如果经理消失,您可能会遇到问题。

    Compose:Docker Compose 是一种用于管理服务、Swarm 和 Stacks 的工具。

    Docker compose 用于将图像组合成一个工作应用程序。例如,它可能包括前端代理、网站和后端数据库。这项技术与 docker swarm 没有任何关系,特别是...除了您可以使用它来跨 swarm 部署您的应用程序 (https://codefresh.io/blog/deploy-docker-compose-v3-swarm-mode-cluster/)

    堆栈:当 Swarm Manager 管理多个...时,会出现 Docker 堆栈。

    堆栈用于 docker 云。这可能不是你要找的:)

    【讨论】:

    • 感谢@Ross (+1) - 如果您不介意,只需两个(希望如此!)快速跟进问题:(1) 重新阅读文档,您是确定 Swarm 是必需 来管理服务的吗?从文档看来,您可以只在单个主机上使用 Compose 来管理多个服务容器,而无需 Swarm 的任何参与。想法? (2)确定 Docker Stacks被Docker Cloud使用吗?再次阅读文档后,您似乎可以在没有 Docker Cloud 的情况下拥有一个堆栈。再次感谢!
    • 好的。服务仅存在于 swarm 中:) 所以是的,您绝对需要 swarm 来管理它……但是您不需要 swarm 来部署 docker 映像。事实上,我强烈建议你在习惯 docker 之前不要这样做。你是对的 - docker compose 是一种很好的方式,无需 docker swarm 即可工作。 2) 仔细检查了码头 - 堆栈现在可以与 swarm 一起使用 :)
    • 如果说docker-compose文件定义了一个要部署在docker cloud上的栈对吗?
    【解决方案2】:

    Docker swarm 是一个集群和编排工具。它用于跨多个节点调度容器。您可以将多个节点组合为一个集群,然后向该集群发送“docker run”命令。

    Docker 堆栈是在特定环境中构成应用程序的服务集合。堆栈文件的扩展名是yaml(也是yml)。

    【讨论】:

    • 谢谢@Virendra (+1) - 你知道 Docker Stacks 是否可以在 Docker Cloud 之外使用吗?还是它们仅由 Docker Cloud 使用(并且对它们有用!)?再次感谢!
    • 那么 Stack 和 Docker Compose 的区别是什么?他们俩似乎都将一堆“服务”分组并一起运行。
    • @akki docker compose 可以构建图像,docker stack 不能。 Docker stack 可以部署多个副本,而 docker compose 不能(没有变通方法)都可以在 docker cloud 之外使用,但是 compose 更适合本地环境
    【解决方案3】:

    我这样做是为了帮助我理解堆栈概念。

    【讨论】:

      【解决方案4】:

      Swarm Mode:这是指使用声明式语法管理多节点环境的整体技术。它由一个分布在法定数量的管理器中的嵌入式 raft 数据库和一个不断纠正服务定义的当前状态和目标状态之间的差异的调度程序组成。

      集群:由 Swarm 模式管理的一组节点。

      节点:作为集群一部分的单个 docker 引擎。每个节点可能是一个 Worker 或一个 Manager。管理器既可以运行工作负载,也可以负责维护 raft 数据库并选择领导者来运行调度程序。

      堆栈:这主要被视为部署在 Swarm 模式中的服务、网络和卷的集合的命名空间。目前,它是一种客户端构造,用于查找具有特定标签的对象。 Stack 映射到以 Swarm 模式部署的 compose 文件(docker-compose 也可用于将 compose 文件作为 compose 项目部署到单个 docker 引擎)。

      服务:映像的定义、将其部署为容器时使用的配置以及在 Swarm 模式集群中部署容器的位置。一项服务可能会导致一个或多个具有相同配置设置的容器。 Swarm 模式将定义一个 DNS 条目,该条目将负载平衡到具有服务名称的容器。通过组合多个副本和滚动更新,可以在不停机的情况下对服务进行更改。

      【讨论】:

        【解决方案5】:

        Swarm 用于创建和管理 docker 集群。它更喜欢主机管理和服务管理。 Stack依赖swarm创建的集群,只是一个管理工具,偏向于服务管理

        swarm overview

        stack deploy

        【讨论】:

          猜你喜欢
          • 2016-10-24
          • 1970-01-01
          • 2021-05-24
          • 2015-04-08
          • 1970-01-01
          • 1970-01-01
          • 2018-10-18
          • 1970-01-01
          • 2022-07-04
          相关资源
          最近更新 更多