Docker Swarm 介绍与选型指南

介绍 Docker Swarm(Swarm mode):内置 Docker Engine 的集群编排,Manager/Worker 与 Raft 一致性、声明式服务模型、overlay 网络与路由网格、默认 TLS 安全与滚动更新,快速上手示例,量化对比 Kubernetes、Nomad、Docker Compose 并给出选型建议。

Docker SwarmDocker Swarm编排容器编排Docker运行时2026/10/18

Docker Swarm 介绍与选型指南

本文为 A1 认知篇(软件介绍与选型指南),全部信息来自官方公开资料溯源(官方文档、官方发行记录),不含本地安装与实测数据。文末附官方来源清单。本文主题即 Docker 自身的 Swarm 编排能力,docker、容器、镜像等均为正文技术名词。

一、信息基准

1.1 组件-版本基准表

Docker Swarm 无独立统一版本号,以官方组件口径给出基准(查询日期 2026-10-18):

组件版本基准依据
Swarm mode(集群编排能力)随 Docker Engine 内置发行;基准 Engine 29.9.1(2026-10-14 发布,官方发行说明实查)https://docs.docker.com/engine/release-notes/29/
SwarmKit(编排实现库)v2.1.2(官方仓库 moby/swarmkit 最新发行记录实查)https://github.com/moby/swarmkit
Docker Classic Swarm(standalone 独立编排器)已停止积极开发(官方总览页原文:「no longer actively developed」)https://docs.docker.com/engine/swarm/
Docker Engine(Swarm 宿主引擎)29.9.1官方静态包仓库 docker-29.9.1.tgz 实查

1.2 官方来源清单

来源说明链接
Swarm mode 总览特性清单与 Classic Swarm 区分声明https://docs.docker.com/engine/swarm/
Swarm 关键概念swarmkit、节点/服务/任务/负载均衡https://docs.docker.com/engine/swarm/key-concepts/
Swarm 教程官方上手教程(swarm init、service 部署)https://docs.docker.com/engine/swarm/swarm-tutorial/
SwarmKit 仓库编排层实现(v2.1.2)https://github.com/moby/swarmkit
Engine 29 发行说明宿主引擎版本基准https://docs.docker.com/engine/release-notes/29/

二、软件概述

Docker Swarm(现指 Swarm mode)是内置于 Docker Engine 的原生集群管理与编排能力,用于把一组 Docker 主机组成一个虚拟整体(官方称为 swarm),并用 Docker CLI 直接创建集群、部署服务与管理集群行为。官方总览明确:Swarm mode 由独立项目 SwarmKit 实现 Docker 的编排层,并被 Docker 直接内置使用——这意味着用户「不需要额外的编排软件」即可获得多主机容器编排;同时官方特别提醒不要把 Swarm mode 与已停止开发的 Docker Classic Swarm 混为一谈。

模型上,swarm 中的 Docker 主机以 manager(负责编排与集群管理,内部以 Raft 协议选出 leader)与 worker(接收并执行任务,默认不参与调度决策)两种角色参与;用户以声明式方式定义服务(service)的期望状态——副本数、网络与存储资源、对外端口等,Swarm 持续协调实际状态向期望状态收敛(如 worker 宕机后自动把任务调度到其他节点)。同一集群中仍可按需运行独立容器(standalone containers),也可用 stack 文件组合多个服务。

三、核心架构

3.1 Manager 与 Worker 角色

  • Manager:执行编排与集群管理功能,维护集群状态,多个 manager 间以 Raft 共识保持一致并选举 leader(官方文档含 Raft 共识专述);manager 数量建议为奇数以保障容错仲裁。
  • Worker:默认只接收并执行 manager 分派的任务(task,即 Swarm 服务中的一个运行容器);worker 不可用时其任务被重新调度。
  • 一个 Docker 主机可同时兼任 manager 与 worker。

3.2 服务、任务与期望状态

  • service:声明式的服务定义(镜像、副本数、端口、网络、卷、更新策略等);
  • task:服务的一次具体运行实例(一个容器),由 manager 按期望状态分配;
  • 协调循环:manager 持续比对实际状态与期望状态(如 10 副本中 2 副本所在 worker 宕机,则新建 2 个副本并分配到可用节点);
  • 配置可变更无需手动重启:修改服务配置后,Swarm 停止旧配置任务并按新配置创建新任务。

3.3 网络与负载均衡

  • overlay 网络:跨主机容器组网,manager 在应用初始化或更新时自动为容器分配地址;
  • 服务发现:每个服务获得唯一 DNS 名称,swarm 内嵌 DNS 服务器解析;
  • 路由网格(routing mesh):外部请求经暴露端口路由到任一节点的服务副本,内部可指定容器在节点间的分发方式。

3.4 安全模型

默认安全(secure by default):节点间通信强制 TLS 双向认证与加密,支持自签名根证书或自定义根 CA;官方还提供 secrets/configs 机制以受保护方式向服务下发敏感数据与配置,并可启用自动锁定(autolock)保护加密密钥。

四、功能特性

4.1 与 Engine 一体化的集群管理

swarm 的创建、加入(swarm init/join)与服务管理全部使用 Docker CLI 完成,无需安装额外编排软件;manager/worker 特化在运行时完成,可用同一份系统盘镜像搭建整群(官方:decentralized design)。

4.2 声明式服务模型与弹性扩缩

以期望状态声明服务;docker service scale 按需增减任务副本,manager 自动适配;节点故障时自动重调度,维持期望副本数。

4.3 滚动更新与回滚

按批次增量更新节点上的服务,可控制批次间延迟;更新异常可回滚到前一版本服务。

4.4 多主机网络、发现与流量分发

overlay 跨主机网络 + 内嵌 DNS 服务发现 + 路由网格负载均衡,对外可再挂接外部负载均衡器。

4.5 安全与密钥管理

默认 TLS 双向认证、PKI 证书轮换、secrets/configs 敏感数据管理、autolock 集群锁定(官方文档均有专述)。

五、快速上手

以下引自官方 Swarm mode 教程(未做本地实测)。在 manager 节点初始化 swarm:

docker swarm init --advertise-addr <MANAGER-IP>

worker 节点用官方输出的 join 命令加入集群:

docker swarm join --token <TOKEN> <MANAGER-IP>:2377

部署一个 3 副本服务并查看(官方教程示例):

docker service create --replicas 3 --name helloworld alpine ping docker.com
docker service ls
docker service inspect --pretty helloworld
docker service scale helloworld=5

官方教程:https://docs.docker.com/engine/swarm/swarm-tutorial/ 。

六、适用场景与限制

6.1 适用场景

  • 已全面使用 Docker、希望零额外组件获得多主机编排的中小规模集群。
  • 以服务副本与滚动更新为核心的常规无状态/轻状态应用部署。
  • 与 Docker Compose 语义衔接的过渡路径:单机用 Compose,跨主机直接 swarm stack。
  • 边缘与资源受限环境:编排层内置于引擎,控制面组件少、占用低。

6.2 限制与注意事项

  • 生态与调度能力边界:相比 Kubernetes 缺少庞大的 Operators/策略/多租户生态,复杂调度与治理需求应直接评估 Kubernetes(官方文档亦提示:面向 Kubernetes 部署开发时可考虑 Docker Desktop 集成的 Kubernetes)。
  • 官方定位提示:官方明确「打算以 Swarm 作为生产运行环境才用 Swarm mode;不打算用 Swarm 部署则用 Docker Compose」,即单机场景无需引入 swarm。
  • 存量混淆风险:Classic Swarm 已停止开发,技术资料中「Docker Swarm」一词可能指旧版,落地时以 Swarm mode 为准。
  • 社区投入分散:2023 年后 Docker 官方重心在 Desktop/Scout/BuildKit 等产品线,Swarm mode 功能演进以维护为主(以官方发行说明为准)。

七、同类选型对比

7.1 对比对象与版本基准

同为「容器集群编排」定位的三个对比对象:Kubernetes(编排事实标准)、Nomad(HashiCorp 轻量编排器)、Docker Compose(单机声明编排,作为「是否需要集群」的对照)。版本基准(2026-10-18 查询):Docker Swarm 随 Engine 29.9.1 内置(SwarmKit v2.1.2);Kubernetes 最新发行记录为 v1.38.0-alpha.2(2026-10-07,官方仓库 releases feed;稳定线按季度大版本+月度补丁演进);Nomad v2.0.7(2026-09-18);Docker Compose 独立项目随 Docker 官方发布。

7.2 量化对比

维度Docker Swarm(内置)KubernetesNomadDocker Compose
开源许可Apache-2.0(随 Engine/SwarmKit)Apache-2.0(官方 LICENSE 实查)BUSL-1.1(官方 LICENSE 实查,到期转 MPL-2.0)Apache-2.0
最近发版 / stars(2026-10-18)随 Engine 29.9.1(2026-10-14);SwarmKit v2.1.2;moby/moby 72,201v1.38.0-alpha.2(2026-10-07);128,346(kubernetes/kubernetes)v2.0.7(2026-09-18);17,015(hashicorp/nomad)随 Docker 官方高频发布(compose/compose)
版本节奏随 Engine,维护为主季度大版本+高频补丁,发布体系最重常规版本迭代,2.x 已发布高频小版本
兼容矩阵依赖 Docker Engine 的 Linux 主机群CRI 运行时中立(containerd/CRI-O 等),云厂商托管普遍支持 Docker/Podman 等多种驱动,可编排非容器工作负载依赖 Docker Engine(单机或单主机 Compose)
编排能力服务/副本/overlay 网络/DNS 发现/路由网格/滚动更新,内置即用全功能:调度策略、存储/网络插件生态、Operator、多租户治理二进制级轻量控制面,作业与服务编排,多数据中心单机多容器应用声明与生命周期,不做跨主机调度

(数据来源:各项目官方仓库 LICENSE 与 releases feed、官方发行说明,均为 2026-10-18 查询。)

7.3 选型建议

一句话建议:已有 Docker 基础且集群规模中小、追求零额外组件选 Docker Swarm;需要完整编排生态、多云托管与大规模治理选 Kubernetes;想要轻量控制面并兼顾非容器负载选 Nomad(注意 BUSL-1.1 许可);只在一台主机上编排少量服务,用 Docker Compose 即可,无需引入 swarm。

八、参考链接

  1. Swarm mode 官方总览:https://docs.docker.com/engine/swarm/
  2. Swarm 关键概念:https://docs.docker.com/engine/swarm/key-concepts/
  3. Swarm 官方教程:https://docs.docker.com/engine/swarm/swarm-tutorial/
  4. Raft 共识文档:https://docs.docker.com/engine/swarm/raft/
  5. SwarmKit 仓库:https://github.com/moby/swarmkit
  6. Docker Engine 29 发行说明:https://docs.docker.com/engine/release-notes/29/
  7. Moby 上游仓库:https://github.com/moby/moby
  8. Kubernetes 官方仓库:https://github.com/kubernetes/kubernetes
  9. Nomad 官方仓库:https://github.com/hashicorp/nomad
  10. Docker Compose 官方文档:https://docs.docker.com/compose/