Docker Swarms和Stacks:有什么区别?

时间:2017-06-12 13:13:18

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

我刚刚阅读了Docker的优秀Getting Started指南,并且在我走得更远之前,我想确认我理解基本的Docker用语。这些定义在文档中提供了一些,但是很多这些文档都是基于示例的,没有给出以下概念的具体形式。

因此,我的理解就是:

  • 服务:Docker Services是应用程序的不同组件:前端可能是React UI,后端可能是Spring Boot Web服务,您可能拥有MySQL数据库以及RabbitMQ经纪人;这些都是不同的服务都包含您的应用程序,是吗?
  • 群集:Docker群集就是当Swarm为2 + Docker主机上的应用程序管理1+服务时;群集只是指服务容器运行的所有Docker主机,是吗?
  • 撰写:Docker Compose是一个用于管理服务,群组和堆栈的工具,
  • 堆栈:当Swarm Manager为给定应用程序管理给定群集上的多个服务的多个群组时,会发生Docker堆栈;因此Swarm和Stack之间的区别在于Swarm只适用于单个Service,而Stack管理多个Swarms,因此多个服务都包含一个可伸缩和分布式应用程序,是吗?

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

  

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

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

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

  

集群:Docker集群就是当Swarm为2个以上Docker主机上的应用程序管理1+服务时;群集只是指服务容器运行的所有Docker主机,是吗?

呀。集群由节点组成,这些节点是工作者(运行服务)或管理器(控制跨节点的服务调度)。请注意,节点可以是工作者和管理者。

我仍然围绕着经理,但我相信你的目标是至少有3个奇数,否则如果经理消失,你可能会遇到问题。

  

撰写:Docker Compose是一个用于管理服务,群组和堆栈的工具,是吗?

Docker compose用于将图像组合到工作应用程序中。例如,它可能包括前端代理,网站和后端数据库。这项技术与docker swarm无关......除了你可以使用它来跨群体部署你的应用程序(https://codefresh.io/blog/deploy-docker-compose-v3-swarm-mode-cluster/

  

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

Stack用于docker cloud。这可能不是你想要的:)

答案 2 :(得分:1)

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

enter image description here

答案 3 :(得分:0)

Swarm用于创建和管理Docker集群。它更喜欢主机管理和服务管理。堆栈依赖于由swarm创建的集群,该集群只是一个管理工具,倾向于服务管理

swarm overview

stack deploy

答案 4 :(得分:0)

集群模式:这是指用于使用声明性语法管理多节点环境的整体技术。它由分布在一定数量的管理者中的嵌入式筏数据库和一个计划程序组成,该计划程序不断纠正服务定义的当前状态和目标状态之间的差异。

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

节点:作为集群一部分的单个Docker引擎。每个节点可以是一个Worker或Manager。经理既可以运行工作负载,又负责维护筏数据库并选择负责人来运行调度程序。

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

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