如何禁用Docker Swarm模式?

54

我已经启用了Docker Swarm进行本地测试。现在,每次尝试使用docker-compose up部署时,我会看到以下警告:

警告:您正在使用的Docker引擎处于Swarm模式运行。

Compose不使用Swarm模式将服务部署到Swarm中的多个节点上。所有容器都将在当前节点上调度。

要在Swarm中部署应用程序,请使用docker stack deploy

如何禁用Docker Swarm模式?

4个回答

103

docker swarm leave 用于让工作节点退出群集,而 docker swarm leave --force 则是用于从群集中移除管理节点。


我有一个只有一个管理器的Swarm。我想禁用Swarm模式,因为我不需要它,并且我在nginx反向代理原始客户端IP方面遇到了问题。所以如果我删除/禁用管理器,容器仍然可以工作吗?网络堆栈和内部IP(10.x.x.x.)会发生什么? - Kreker
如果您有一个节点作为管理器并想要关闭它,那么您的Swarm将无法正常运行。如果您在该Swarm内运行着一个Stack,那么Stack将不会处于活动状态。更好的方法是先删除Stack(我指的是docker stack),然后再禁用/删除Swarm。 - Muhammad Tariq
你的docker stack或服务将在管理节点宕机或无法维持法定人数时自动删除。请查看给定链接中的“离开Swarm”部分:https://docs.docker.com/engine/swarm/manage-nodes/ - Muhammad Tariq

14

docker swarm leave应该就能解决问题


14
我不得不使用 docker swarm leave --force 命令,但它确实起作用了,谢谢! - Datageek

2

docker swarm leave --force

docker network prune

第一个命令是停止swarm,然后删除所有网络。这应该可以解决问题。


1

如果 docker swarm leavedocker swarm leave --force 无法正常工作并返回错误

 Error response from daemon: context deadline exceeded

你可以删除 /var/lib/docker/swarm 并重新启动服务。例如在CentOS操作系统中。

systemctl restart docker

2
这可能是“严厉的建议”,应该谨慎考虑。如果您按照建议实际执行rm命令,则会以非常笨拙的方式有效地删除Docker。 - Mike Robinson
@MikeRobinson 感谢您的评论!您是正确的,我犯了一个错误并已经修复了它。不要使用星号,只需删除或移动Swarm目录即可。 - Nikita Shesterikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接