docker-compose restart policy - 禁用重启之间的指数延迟

Loï*_*oïc 7 docker docker-compose

我有一个docker-compose文件,配置restart策略设置为的服务always

commandISpython3 script.py

script.py只打印当前时间戳:

import time

print(time.time())
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,看起来更多的docker尝试重新启动服务,它在重新启动之间等待的次数就越多.一开始它每隔一两秒尝试一次,然后是四,七,十四,二十六......

我怎么能禁用它?我希望每次停止时都尽快重启我的服务.

Jan*_*raj 5

您可以选择以自定义在泊坞窗,撰写级别的重新启动策略- 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毫秒,然后等待200毫秒,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

  • [docker-compose 参考](https://docs.docker.com/compose/compose-file/#deploy) 指出`这仅在使用 docker stack deploy 部署到 swarm 时生效,并被 docker-compose 忽略up 和 docker-compose 运行。` (2认同)