Docker Swarm 常用命令与实战指南

2025-12-24 docker Swarm

环境与 Docker 安装

系统要求

  • Linux(推荐 Ubuntu 20.04 / 22.04)
  • 节点之间网络互通
  • 至少 1 台 Manager,1 台 Worker

Docker 安装(所有节点)

1
2
3
curl -fsSL https://get.docker.com | bash
systemctl start docker
systemctl enable docker

验证:

1
2
docker version
docker info

Docker Swarm 初始化与加入集群

初始化 Swarm(Manager 节点)

1
docker swarm init --advertise-addr <manager-ip>

该命令完成三件事:

  1. 初始化 Swarm 集群
  2. 当前节点成为 Manager
  3. 生成 join token

查看 Swarm 状态

1
docker info | grep Swarm

查看 join token(高频命令)

1
2
docker swarm join-token worker
docker swarm join-token manager

该命令会输出完整 join 命令,可直接复制使用。

Worker / Manager 加入集群

1
docker swarm join --token <token> <manager-ip>:2377

轮换 join token(安全建议)

1
2
docker swarm join-token --rotate worker
docker swarm join-token --rotate manager
  • 旧 token 立即失效
  • 已加入节点不受影响

节点管理(Node 运维核心)

查看节点列表

1
docker node ls

节点维护(推荐流程)

1
docker node update --availability drain worker1

Drain 会停止调度新容器,并迁移已有任务。

恢复调度:

1
docker node update --availability active worker1

节点升降级

1
2
docker node promote worker1
docker node demote manager2

生产环境建议 至少 3 个 Manager,避免脑裂。

移除节点

1
docker node rm worker1

强制移除(失联节点):

1
docker node rm --force worker1

节点主动退出

1
docker swarm leave

Manager 强制退出(危险):

1
docker swarm leave --force

⚠️ 最后一个 Manager 强制退出将直接解散整个 Swarm。

Service 运维(最常用)

创建服务

1
docker service create --name web nginx

查看服务状态

1
2
docker service ls
docker service ps web

扩容 / 缩容

1
docker service scale web=5

更新服务

1
docker service update --image nginx:latest web

删除服务

1
docker service rm web

Stack(Compose)管理

部署 Stack

1
docker stack deploy -c docker-compose.yml myapp

查看 / 删除 Stack

1
2
3
4
docker stack ls
docker stack services myapp
docker stack ps myapp
docker stack rm myapp

日志、排错与监控

服务日志(首选)

1
2
docker service logs web
docker service logs -f web

实时状态

1
2
docker stats
docker events

网络与存储

1
2
3
4
docker network ls
docker network inspect ingress
docker volume ls
docker volume inspect myvol

核心命令速查(收藏)

1
2
3
4
5
6
7
8
9
10
docker swarm init
docker swarm join-token worker
docker node ls
docker node update --availability drain
docker service ls
docker service scale
docker service logs
docker stack deploy
docker node rm
docker swarm leave