我是docker swarm模式的新手。如你所知,可以启动/停止docker容器,但我认为不可能在swarm中执行此操作 例如,我已经部署了swarm并使用副本(2/2)创建了新任务:
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2o3a6z30q9df contactactivity replicated 2/2 myimage/live-springboot-myservice:19ff0be1f0087asd1dasdb52c345151e9985b4a5a2 *:111->1111/tcp
是否可以在不移除它的情况下停止其中一个群集容器并在将来将其恢复?
P.S。我只是想澄清删除或重新创建 - 在我的情况下不是选项。
使Q清楚: 如果你停止容器然后开始 - 这个容器不会成为群的一部分。我无法相信在群集模式下无法进行简单的重启或启动/停止。
答案 0 :(得分:2)
列出为服务运行的容器&阻止他们
例如
docker ps | grep service-name
然后使用上面的命令{/ 1}}停止容器。
docker stop <ID>
如果要停止所有容器,则只需将服务缩小为0
如下
OR
用它们带回来
docker service scale servicename=0
答案 1 :(得分:0)
我自己也觉得很奇怪,但显然 docker swarm 想要的方法是删除服务,然后从堆栈或命令行重新部署它。此外,如果服务是全局的,并在失败时重新启动策略并且容器被终止,则它的两个实例将存在(但如果它被正常停止则不会)。
答案 2 :(得分:-1)
不,这不可能是“开箱即用”的,即使您设法以某种艰难的方式做到这一点,也与Docker Swarm方法完全相反。
您尝试执行的步骤是典型的(手动)操作步骤:使用Swarm,您需要协调器(UCP,管理器节点中的逻辑)进行这种操作。
每当它决定执行一个新任务时,它就会启动一个容器实例,它始终是一个新的启动容器。 这有两个结果,这是docker最佳实践,也许一起可以解决您的问题: