Swarm 集群管理
Swarm 模式的初始化、服务部署、扩缩容与滚动更新,以及它和 K8s 的取舍。
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| Flag | Meaning |
|---|---|
--update-parallelism | How many tasks update at once |
--update-delay | Wait between batches |
--update-failure-action | pause / continue / rollback |
--rollback | Revert the last update |
用 compose 部署到 Swarm
Bash
docker stack deploy -c compose.yaml mystack
docker stack services mystack
docker stack rm mystackSwarm 还是 Kubernetes
| Swarm | Kubernetes | |
|---|---|---|
| Setup | Minutes, built into Docker | Hours, many components |
| Features | Basic scheduling, secrets, overlay | Everything: autoscaling, RBAC, operators |
| Ecosystem | Shrinking | Dominant |
| Best for | Small internal clusters | Anything 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".
初始化集群
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| 参数 | 含义 |
|---|---|
--update-parallelism | 同时更新几个任务 |
--update-delay | 批次之间等待 |
--update-failure-action | 失败时的动作 |
--rollback | 回滚上一次更新 |
用 compose 部署到 Swarm
Bash
docker stack deploy -c compose.yaml mystack
docker stack services mystack
docker stack rm mystackSwarm 还是 Kubernetes
| Swarm | Kubernetes | |
|---|---|---|
| 上手 | 几分钟,Docker 自带 | 数小时,组件多 |
| 功能 | 基础调度、密钥、overlay | 生态完整 |
| 生态 | 在萎缩 | 主流 |
| 适合 | 小规模内部集群 | 长期运行的生产系统 |
新项目不要再选 Swarm。它仍在维护,但招聘、托管服务、第三方工具都向 K8s 集中;Swarm 适合「已经有一小撮服务、不想引入 K8s」的场景。