核心是三步:初始化管理节点、添加工作节点、部署服务;执行docker swarm init指定IP初始化Manager,复制join命令在其他机器运行加入Worker,再用docker service create或docker stack deploy发布服务。

用 Docker 内置 Swarm 模式搭简易容器集群,核心就三步:选一台机器初始化为管理节点、其他机器加入作为工作节点、再部署服务。整个过程不依赖额外工具,命令少、上手快。
初始化 Swarm 管理节点
在准备好的首台机器上执行:
- 运行 docker swarm init --advertise-addr (比如
192.168.171.151),该机器立刻成为 Manager - 命令成功后会输出一行
docker swarm join --token ...,务必复制保存——这是后续加节点的唯一凭证 - 若机器有多个网卡,--advertise-addr 必须指定真实对外通信的 IP,否则其他节点无法连接
添加工作节点(Worker)
在其余每台待加入的机器上,粘贴并执行上一步复制的 join 命令:
- 例如:docker swarm join --token SWMTKN-1-... 192.168.171.151:2377
- 执行成功后,该节点自动注册为 Worker,开始接受任务调度
- 用 docker node ls 在 Manager 上查看,状态为
Ready且Active表示已在线
部署一个高可用服务
所有服务操作都在 Manager 节点进行:
- 运行 docker service create --name myweb --replicas 3 -p 80:80 nginx:alpine,Swarm 会自动在可用 Worker 上启动 3 个副本
- 任意集群节点的 80 端口都能访问该服务——靠内置的 Ingress 网络实现跨节点负载均衡
- 用 docker service ps myweb 查看每个副本实际运行在哪台节点、当前是否运行中
- 手动关掉一个 Worker,Swarm 会在几秒内自动补足副本数,无需人工干预
用 Stack 文件编排多服务(推荐进阶用法)
比单条命令更稳定、易维护的方式是写 docker-compose.yml(v3.8+ 格式):
- 定义 web、db、cache 等多个服务,加上
deploy字段控制副本数、重启策略、节点约束等 - 执行 docker stack deploy -c docker-compose.yml myapp,Swarm 自动创建网络、卷和服务
- 修改配置后再次 deploy,Swarm 默认按滚动更新替换旧任务,支持设置暂停间隔和失败回退


















