1. 概述

Docker Swarm 是 Docker 原生的容器编排与集群管理工具,支持在分布式环境中部署和维护服务,并能管理整个集群节点。但有时我们可能希望关闭 Swarm 模式,比如想切换到其他编排工具(如 Kubernetes),或者不再需要集群功能。

本文将详细介绍如何禁用 Docker Swarm 模式。

2. 禁用 Docker Swarm 模式的步骤

在禁用 Swarm 模式之前,需要了解以下几点影响:

服务丢失:所有在 Swarm 中运行的服务将被停止并删除
节点退出集群:当前节点将离开 Swarm 集群,如果是管理节点(manager),将不再具备管理权限
数据备份建议:操作前建议备份重要数据和配置信息

具体操作流程如下:

  1. 使用 docker info 检查当前 Swarm 状态
  2. 执行 docker swarm leave 命令让节点退出 Swarm
  3. 使用 docker swarm leave --force 强制退出(仅限管理节点)
  4. 再次检查 Swarm 状态确认已关闭
  5. 清理残留的网络和卷资源

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 环境将恢复为单机模式,可以更方便地切换到其他编排工具或进行本地开发测试。


原始标题:How to Disable Docker Swarm Mode?