簡體   English   中英

如何在不刪除的情況下以群模式停止/啟動 docker 容器?

[英]How to stop/start docker containers in swarm mode without removing?

我是 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

是否可以在不移除一個 swarm 容器的情況下停止它並在將來將其帶回來?

PS我只是想澄清刪除或重新創建 - 在我的情況下不是選項。

讓 Q 清楚:如果你停止容器然后啟動 - 這個容器不會成為 swarm 的一部分。 我無法相信在 swarm 模式下無法進行簡單的重啟或啟動/停止。

列出為服務運行的容器並停止它們,例如docker ps | grep service-name 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 想要的方法是刪除服務,然后從堆棧或命令行重新部署它。 此外,如果服務是全局的,並在失敗時重新啟動策略並且容器被終止,則它的兩個實例將存在(但如果它被正常停止則不會)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM