Docker Swarm 是什么?

17 Mar 2025 | 4 分钟阅读

在理解 Docker Swarm 之前,我们需要了解“Docker”和“Swarm”这两个术语的含义。

What is a Docker Swarm?

Docker

Docker 是一种用于将应用程序作为轻量级容器自动部署的工具,以便特定应用程序能够在不同类型的环境中无缝运行。

简单来说,Docker 是一种轻量级的软件软件包,包含运行应用程序所需的所有依赖项、库和框架。

它是一种软件平台,使开发人员能够将容器的使用无缝集成到软件应用程序的开发过程中。

关于 Docker 的另一个重要事项是它是开源的,并且适用于各种操作系统,如 Mac、Windows,这使得开发人员可以自由地在他们喜欢的操作系统上工作。该应用程序还提供了集中式机器和主机系统之间的控制接口。

容器

Docker 应用程序的主要重点是利用容器和管理软件开发过程。容器使软件开发人员能够将应用程序与运行该应用程序所需的任何计算环境中运行所需的代码和依赖项打包在一起。

因此,当集中式应用程序从一个计算环境迁移到另一个计算环境时,它们将运行得无缝且可靠。在 Docker 应用程序中,通过运行镜像来实现容器。

所以,我们不必在电脑上安装“JRE”,而是可以下载便携式 JRE 作为镜像,并将其与我们的代码一起包含在容器中。

Docker Swarm 模式服务有哪些类型?

Docker Swarm 提供两种类型的服务。

  1. 全局服务
  2. 副本服务
What is a Docker Swarm?

全局服务

这些是通过使用 Swarm Manager 来调度的服务,它将一个任务调度到满足资源需求和服务约束的每个可用节点。

副本服务

Swarm 模式副本服务由用户通过指定副本任务的数量来执行,Swarm Manager 会将该特定任务分配给具有所有必需服务约束的每个可用节点。

Swarm

“Swarm”一词指的是任何事物的集合,例如形成集群的节点。在集群中,所有节点协同工作,或者我们可以说所有节点作为一个整体工作。

Docker Swarm

What is a Docker Swarm?

它基本上是一组运行 Docker 应用程序的虚拟机或物理机的集合。这个由多台机器组成的组被配置为一个集群。

当这些机器的配置完成并形成集群时,我们仍然可以使用我们熟悉的 Docker 命令,但现在它们将在集群中的多台机器上执行。

这里“Swarm”一词发挥作用,它是控制集群中所有可用机器的,集群中存在或加入的每台机器都被视为一个节点。

Docker Swarm 的另一种定义

Docker Swarm 本质上是一种工具,可以让我们轻松创建和调度多个 Docker 节点。Docker Swarm 也可以用于大量的 Docker 节点。Docker Swarm 中的每个节点本身就是一个 Docker 守护进程,该守护进程能够与 Docker API 交互,并具有完整的 Docker 环境的优点。

Docker Swarm 节点是什么?

Docker Swarm 可以识别三种不同类型的节点,每种节点在 Docker Swarm 的生态系统中都扮演着不同的角色。

节点类型

Docker Swarm 节点有三种类型,如下所示。

  1. 领导节点
  2. 管理器节点
  3. 工作节点
What is a Docker Swarm?

领导节点

集群形成过程完成后,一个称为“Raft 共识”的算法被用来在集群中可用的节点中选择一个领导节点。

领导节点负责诸如 Swarm 的任务编排决策、管理 Swarm 等任务。如果领导节点因任何原因宕机或变得不可用,则使用相同的算法将领导权转移到另一个节点。

管理器节点

集群成功建立后,将使用一个算法来选择其中一个作为领导节点,该算法称为“Raft 共识”。

被选为领导者的节点负责 Swarm 的所有管理,并为 Swarm 做出决策。

如果领导节点由于某些致命错误或硬件故障而变得不可用,则会从可用节点中重新选择一个节点。

工作节点

在包含大量主机的 Docker Swarm 中,每个工作节点执行接收到的任务/操作。此外,它执行领导节点(或管理器节点)分配的每个任务。

通常,所有节点都是工作节点,即使管理器节点也是工作节点,并且在有可用资源时能够执行任务/操作。

Docker Swarm 用于什么?

Docker Swarm 是一种容器编排工具,它允许我们管理部署在多台机器上的多个容器。

Swarm 操作的一个显着优势是应用程序的可用性水平很高。

Docker Swarm 通常包含特定数量的节点,并且至少有一个管理器节点。

管理器节点操作或控制 Docker Swarm 中的每个节点。它还负责处理所有可用节点,并确保它们都能高效工作,或者集群能够高效且无缝地工作。