环境与 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>
|
该命令完成三件事:
- 初始化 Swarm 集群
- 当前节点成为 Manager
- 生成 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
|
节点管理(Node 运维核心)
查看节点列表
节点维护(推荐流程)
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 --force worker1
|
节点主动退出
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
|
删除服务
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
|