Swarm 集群管理

Swarm 模式的初始化、服务部署、扩缩容与滚动更新,以及它和 K8s 的取舍。

Advanced
Key PointsSwarm 是 Docker 内置的集群模式:manager 节点调度,worker 执行;docker service 声明副本数即可。

初始化集群

Bash
# 在 manager 上
docker swarm init --advertise-addr 10.0.0.5

# 在 worker 上执行 init 输出的 join 命令
docker swarm join --token SWMTKN-1-xxxx 10.0.0.5:2377

docker node ls

部署服务

Bash
docker service create --name web --replicas 3 -p 80:80 nginx:1.27

docker service ls
docker service ps web
docker service scale web=5
docker service update --image nginx:1.28 web

滚动更新

Bash
docker service update \
  --image myapi:2.0 \
  --update-parallelism 2 \
  --update-delay 10s \
  --update-failure-action rollback \
  api
FlagMeaning
--update-parallelismHow many tasks update at once
--update-delayWait between batches
--update-failure-actionpause / continue / rollback
--rollbackRevert the last update

用 compose 部署到 Swarm

Bash
docker stack deploy -c compose.yaml mystack
docker stack services mystack
docker stack rm mystack

Swarm 还是 Kubernetes

SwarmKubernetes
SetupMinutes, built into DockerHours, many components
FeaturesBasic scheduling, secrets, overlayEverything: autoscaling, RBAC, operators
EcosystemShrinkingDominant
Best forSmall internal clustersAnything long-lived
Do not pick Swarm for new projects. It is maintained but the hiring pool, managed offerings and tooling all point at Kubernetes. Swarm fits only "a handful of services, no appetite for K8s".

Friends & Partners