我有一个docker-compose文件,配置服务,restart
策略设置为always
的command
是python3 script.py
而且script.py只会显示当前时间戳:
import time
print(time.time())
使用docker-compose up
我得到这个:
random_service | 1546974860.1233172
random_service | 1546974861.9269428
random_service | 1546974863.616101
random_service | 1546974865.4225447
random_service | 1546974867.2077854
random_service | 1546974869.4796813
random_service | 1546974873.4290836
random_service | 1546974880.5541086
random_service | 1546974894.0697372
random_service | 1546974920.4050376
如您所见,似乎docker尝试重新启动服务的次数越多,两次重新启动之间的等待时间就越长。在开始时,它每隔一或两秒钟尝试一次,然后尝试四,七,十四,二十六...
如何禁用它?我希望我的服务在每次停止时都尽快重新启动。
您可以选择以自定义在泊坞窗,撰写级别的重新启动策略- https://docs.docker.com/engine/reference/commandline/service_create/:
--restart-condition满足条件时重新启动(“ none” |“ on-failure” |“ any”)(默认为“ any”)
--restart-delay重新启动尝试之间的延迟时间(ns | us | ms | s | m | h)(默认为5s)
--restart-max-attempts放弃之前的最大重新启动次数
--restart-window用于评估重启策略的窗口(ns | us | ms | s | m | h)
提到的重启行为记录在https://docs.docker.com/engine/reference/run/#restart-policies---restart中:
在每次重新启动之前,添加一个不断增加的延迟(从100毫秒开始,是以前的延迟的两倍),以防止服务器泛滥。这意味着守护程序将等待100 ms,然后等待200 ms,400、800、1600,依此类推,直到达到失败限制,或者当docker stop或docker rm -f容器时。
如果成功重启容器(容器已启动并运行至少10秒钟),则延迟将重置为其默认值100毫秒。
您仍然可以选择在容器或主机操作系统中使用其他适合您需要的进程管理器(新贵,systemd,主管,monit等)。一些建议:https : //docs.docker.com/config/containers/start-containers-automatically/#use-a-process-manager
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句