Swarm 模式
注意
Swarm 模式是用于管理 Docker 守护进程集群的高级功能。
如果您打算将 Swarm 用作生产运行环境,请使用 Swarm 模式。
如果您不打算使用 Swarm 进行部署,请改用 Docker Compose。 如果您是面向 Kubernetes 环境开发,请考虑在 Docker Desktop 中使用 集成的 Kubernetes 功能。
当前版本的 Docker 包含 Swarm 模式,用于原生管理称为“集群(swarm)”的 Docker Engine 集群。使用 Docker CLI 可以创建集群、向集群部署应用程序服务以及管理集群行为。
Docker Swarm 模式已内置于 Docker Engine 中。请勿将 Docker Swarm 模式与 Docker Classic Swarm 混淆,后者已不再积极开发。
功能亮点
与 Docker Engine 集成的集群管理
使用 Docker Engine CLI 创建一个 Docker Engine 集群,以便在其中部署应用程序服务。您无需额外的编排软件即可创建或管理该集群。
去中心化设计
Docker Engine 在运行时处理节点角色的区分,而不是在部署时处理。您可以使用 Docker Engine 部署两种类型的节点:管理节点和工作节点。这意味着您可以从单个磁盘镜像构建整个 Swarm。
声明式服务模型
Docker Engine 采用声明式方法, 让您定义应用程序堆栈中各种服务的期望状态。例如,您可以描述一个由带有消息队列服务和数据库后端的前端 Web 服务组成的应用程序。
扩展
对于每个服务,您可以声明要运行的任务数量。当您进行扩缩容时,Swarm 管理器会自动通过添加或删除任务来适应变化,以维持期望的状态。
期望状态协调
Swarm Manager 节点会持续监控集群状态,并协调实际状态与您期望状态之间的任何差异。例如,如果您设置服务以运行容器的 10 个副本,而承载其中两个副本的工作节点发生故障,Manager 将创建两个新副本以替换已故障的副本。Swarm Manager 会将这些新副本分配给正在运行且可用的工作节点。
多主机网络
您可以为您的服务指定一个覆盖网络。当初始化或更新应用程序时,Swarm 管理器会自动为覆盖网络上的容器分配地址。
服务发现
Swarm 管理节点为集群中的每个服务分配一个唯一的 DNS 名称,并对运行中的容器进行负载均衡。您可以通过嵌入在集群中的 DNS 服务器查询集群中运行的每个容器。
负载均衡
您可以将服务的端口暴露给外部负载均衡器。在内部,Swarm 允许您指定如何在节点间分配服务容器。
默认安全
Swarm 中的每个节点都强制实施 TLS 双向 认证和加密,以保障其与其他所有节点之间的安全通信。您可以选择使用自签名根证书或来自自定义根 CA 的证书。
滚动更新
在发布时,您可以逐步将服务更新应用到各个节点。Swarm 管理器可让您控制向不同节点集部署服务之间的延迟。如果出现问题,您可以回滚到服务的先前版本。
接下来是什么?
- 学习 Swarm 模式 核心概念。
- 开始使用 Swarm 模式教程。
- 探索 Swarm 模式 CLI 命令