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]
添加回答
举报