1. 概述
Docker Swarm 是 Docker 原生的容器编排与集群管理工具,支持在分布式环境中部署和维护服务,并能管理整个集群节点。但有时我们可能希望关闭 Swarm 模式,比如想切换到其他编排工具(如 Kubernetes),或者不再需要集群功能。
本文将详细介绍如何禁用 Docker Swarm 模式。
2. 禁用 Docker Swarm 模式的步骤
在禁用 Swarm 模式之前,需要了解以下几点影响:
✅ 服务丢失:所有在 Swarm 中运行的服务将被停止并删除
✅ 节点退出集群:当前节点将离开 Swarm 集群,如果是管理节点(manager),将不再具备管理权限
✅ 数据备份建议:操作前建议备份重要数据和配置信息
具体操作流程如下:
- 使用
docker info
检查当前 Swarm 状态 - 执行
docker swarm leave
命令让节点退出 Swarm - 使用
docker swarm leave --force
强制退出(仅限管理节点) - 再次检查 Swarm 状态确认已关闭
- 清理残留的网络和卷资源
3. 查看当前 Swarm 状态
首先,我们需要确认当前节点是否加入了 Swarm 集群。执行如下命令:
$ docker info | grep Swarm
Swarm: active
如果输出显示 Swarm: active
,说明该节点当前处于 Swarm 模式中。
4. 退出 Swarm 集群
要禁用 Swarm 模式,首先要让节点退出集群。执行以下命令:
$ docker swarm leave
Node left the default swarm.
此命令用于退出一个工作节点(worker node)。如果你是在管理节点上操作,需要加上 --force
参数强制退出:
$ docker swarm leave --force
⚠️ 注意:--force
参数仅适用于单节点集群,或者在管理节点退出后准备关闭整个 Swarm 的情况。推荐做法是先将管理节点降级为工作节点,再执行 docker swarm leave
退出。
5. 验证 Swarm 模式状态
所有节点退出后,再次执行 docker info
命令确认 Swarm 模式是否已关闭:
$ docker info | grep Swarm
Swarm: inactive
如果输出为 Swarm: inactive
,说明 Swarm 模式已成功禁用。
6. 清理 Swarm 相关资源
禁用 Swarm 后,可能会残留一些网络和卷配置。建议手动清理这些资源以保持环境干净:
删除 Overlay 网络
列出所有由 Swarm 创建的 overlay 网络:
$ docker network ls --filter driver=overlay
然后逐个删除这些网络:
$ docker network rm <network_name>
删除 Swarm 卷
列出所有由 Swarm 创建的卷:
$ docker volume ls --filter label=com.docker.swarm
然后逐个删除:
$ docker volume rm <volume_name>
⚠️ 注意:这些资源不会自动清理,必须手动删除,否则后续使用 Docker 时可能会遇到命名冲突或异常行为。
7. 小结
本文介绍了如何禁用 Docker Swarm 模式,并清理相关资源。虽然操作本身不复杂,但需要注意以下几点:
- ✅ 确保提前备份关键数据
- ✅ 正确退出节点,避免使用
--force
引发集群异常 - ✅ 清理残留资源,避免影响后续操作
完成上述步骤后,你的 Docker 环境将恢复为单机模式,可以更方便地切换到其他编排工具或进行本地开发测试。