我有一个码头工人,撰写文件配置与设置为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
正如你所看到的,它看起来像更多的泊坞窗尝试重新启动该服务,更为其重新启动之间等待的时间。在开始的时候它会尝试每隔一两秒钟,然后四,七,十四,26 ...
我如何禁用?我希望我的服务将尽快重新启动,每次停止。
您可以选择以自定义在泊坞窗,撰写级别的重新启动策略 - https://docs.docker.com/engine/reference/commandline/service_create/:
--restart条件时重新启动条件满足(“无” |”上失败” |”任何”)(默认为‘任何’)
重启尝试之间--restart延迟延迟(ns |简介| MS | S | M | H)(默认5秒)
--restart-MAX,尝试重新启动的最大次数放弃之前
--restart窗口用来评估重新启动策略窗口(NS |简介| MS | S | M | H)
提到重新启动行为被记录在https://docs.docker.com/engine/reference/run/#restart-policies---restart:
之前每次重启才能防患于未然服务器不断增加的延迟(双前一个延迟,始于100毫秒)加入。这意味着守护进程会等待100毫秒,然后200毫秒,400,800,1600,依此类推,直到接通故障限制被击中,或当你停止泊坞窗泊坞窗或RM -f容器。
如果容器被成功地重新启动(容器被启动并运行,至少10秒),该延迟复位到100毫秒其默认值。
你仍然选择使用另一个进程管理器在容器中或在主机操作系统,这可能适合您的需要(新贵,systemd,监事,monit的,...)。一些建议:https://docs.docker.com/config/containers/start-containers-automatically/#use-a-process-manager
我刚刚想出了一招是删除重启政策,像这样docker-compose
运行watch
:
watch -n 0 docker-compose up
现在有〜每次运行时2.5秒。
那么,它是不是真的满意的,如果只有一个服务shutsdown(?),但接近我想会发生什么。真正的解决办法是值得欢迎的。