3 回答

TA貢獻1803條經驗 獲得超6個贊
Docker中有 4 種不同的重啟策略:
no
- 不要自動重啟容器。(默認)on-failure
- 如果容器因錯誤退出,則重新啟動容器,這表現為非零退出代碼。always
- 如果容器停止,請始終重新啟動容器unless-stopped
- 與 always 類似,除了當容器停止(手動或其他方式)時,即使在 Docker 守護程序重新啟動后也不會重新啟動。
docker 無法從應用程序中“檢測”一種錯誤類型并根據它重新啟動或不重新啟動。
實現此目的的一種方法是在您的容器中使用supervisord,并讓它根據您定義的退出代碼列表來處理重啟。但這意味著您的容器只會在 supervisord 崩潰時重新啟動,而不是在您的應用程序崩潰時重新啟動,并且您必須更改代碼以針對應該重新啟動的錯誤和不應該重新啟動的錯誤返回不同的退出代碼。

TA貢獻1773條經驗 獲得超3個贊
因為我想要實現的目標似乎不太可能,所以我再次閱讀了文檔(https://docs.docker.com/engine/reference/commandline/service_create/)并找到了可以--restart-max-attempts
解決我的無限循環問題的選項.

TA貢獻1828條經驗 獲得超13個贊
您可能想嘗試并實現docker stack基于 docker-compose 文件的創建。
在這種情況下,正如compose v3 文檔所示,您可以完全控制服務重啟策略。
下一個示例不允許重新啟動:
version: "3.9"
services:
python:
image: my_user/my_repo:my_container
volumes:
- /home/python:/home
deploy:
restart_policy:
condition: none
您可以使用和調整restart_policy塊condition: [none | on-failure | any]max_attempts: [your_int]
添加回答
舉報