Docker Swarm 简介
约 689 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › Docker › 生产部署(在新窗口打开) › Docker Swarm 简介
Docker Swarm 是 Docker 原生的集群管理和编排工具。它将多台 Docker 主机组成一个集群,让你像管理单台一样部署和扩缩容服务。
Swarm 模式
# 初始化 Swarm(在管理节点上)
docker swarm init --advertise-addr 192.168.1.10
# 查看 Swarm 状态
docker info | grep Swarm
# Swarm: active
# 添加工作节点(在其他机器上执行)
docker swarm join --token SWMTKN-1-xxx 192.168.1.10:2377
# 查看集群节点
docker node lsService(服务)
Swarm 的最小调度单位是 Service,而不是容器。
# 创建一个 Service(3 副本)
docker service create \
--name web \
--replicas 3 \
-p 80:80 \
nginx:alpine
# 查看 Service
docker service ls
docker service ps web
# 查看 Service 日志
docker service logs web
# 扩缩容
docker service scale web=5
docker service scale web=2
# 更新镜像(滚动更新)
docker service update --image nginx:alpine web
# 回滚
docker service rollback web
# 删除 Service
docker service rm webStack(堆栈)
Swarm Stack 使用 Compose 文件部署多服务应用:
# stack.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
api:
image: myapp:latest
deploy:
replicas: 2
resources:
limits:
memory: 512M
cpus: '0.5'
environment:
DB_HOST: mysql
mysql:
image: mysql:8.4
volumes:
- mysql-data:/var/lib/mysql
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
mysql-data:# 部署 Stack
docker stack deploy -c stack.yml myapp
# 查看 Stack
docker stack ls
docker stack services myapp
docker stack ps myapp
# 删除 Stack
docker stack rm myappSwarm vs Compose
| 对比 | Docker Compose | Docker Swarm Stack |
|---|---|---|
| 适用场景 | 单机多容器 | 多机集群 |
| 扩缩容 | compose up -d --scale web=3 | service scale web=3 |
| 滚动更新 | 手动操作 | 内置 rolling update |
| 服务发现 | 自定义网络 DNS | 内置 DNS + VIP 负载均衡 |
| 持久化 | 本地 Volume | Volume + NFS/云存储驱动 |
负载均衡
Swarm 内置的 Ingress 负载均衡:当 Service 发布端口(-p 80:80)时,集群中任意节点的该端口都能访问到 Service。
小结
- Swarm 将多台 Docker 主机组成集群,
docker swarm init初始化,docker swarm join添加节点。 - Service 是 Swarm 的调度单位,支持
replicas扩缩容、滚动更新(service update)、回滚(service rollback)。 - Stack 用 Compose 文件定义多服务应用,
docker stack deploy部署。 - Swarm 内置 Ingress 负载均衡,任意节点的发布端口均可访问 Service。
- Swarm 相对 Kubernetes 更简单,但集群规模较大时 K8s 是更好选择。
上一节:CI/CD 集成 下一节:Kubernetes 简介
