如何在不删除的情况下在群模式下停止/启动 docker 容器?



我是码头工人群模式的新手。如您所知,可以启动/停止 docker 容器,但我认为不可能在 swarm 中执行此操作。
例如,我已经部署了 swarm 并使用 replica(2/2( 创建新任务:

docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                                                                               PORTS
2o3a6z30q9df        contactactivity     replicated          2/2                 myimage/live-springboot-myservice:19ff0be1f0087asd1dasdb52c345151e9985b4a5a2   *:111->1111/tcp

是否可以在不移除它的情况下停止其中一个集群容器并在将来将其带回?

附言我只是想澄清一下,删除或重新创建 - 在我的情况下不是选择。

要明确 Q: 如果您停止容器然后启动 - 此容器将不会成为 swarm 的一部分。我不敢相信在群模式下没有办法进行简单的重启或启动/停止。

列出为服务运行的容器并停止它们 例如 docker ps | grep service-name 然后使用上面的命令停止容器docker stop <ID>

OR

如果要停止所有容器,则只需将服务缩减到0 像下面一样 docker service scale servicename=0 将它们带回使用 docker service scale servicename=N

不,这不可能"开箱即用",即使您设法以某种困难的方式做到这一点,它也将与 Docker Swarm 方法完全相反。

您尝试执行的步骤是典型的(手动(操作步骤:使用 Swarm,您需要对编排器(UCP,管理器节点中的逻辑(进行此类操作。

Swarm 每次决定执行时都会启动一个新任务,一个容器实例,并且它始终是一个全新的启动容器。 这有两个结果,它们是 docker 最佳实践,也许可以一起解决您的问题:

  • 您希望容器尽可能快地启动
  • 如果容器内部有一些您害怕丢失或需要很长时间才能创建/收集的内容,只需将其保留在容器本身之外(例如,在共享 docker 卷中,新创建的容器将在启动时发现它已准备就绪(

我自己觉得很奇怪,但显然 docker swarm 想要的方法是删除服务,然后从堆栈或命令行重新部署它。此外,如果服务是全局的,并且失败时重新启动策略,并且容器被终止,则它的两个实例将存在(但如果它被正常停止,则不存在(。

相关内容

最新更新