代码之家  ›  专栏  ›  技术社区  ›  Loïc

docker compose重新启动策略-禁用重新启动之间的指数延迟

  •  7
  • Loïc  · 技术社区  · 7 年前

    我有一个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尝试重启服务的次数越多,重启之间等待的时间就越长。 开始时,它每一两秒尝试一次,然后是四、七、十四、二十六。。。

    我怎样才能禁用它?我希望我的服务在每次停止时都能尽快重新启动。

    2 回复  |  直到 7 年前
        1
  •  7
  •   Community Mohan Dere    6 年前

    您可以选择在docker compose级别自定义重启策略- https://docs.docker.com/engine/reference/commandline/service_create/

    --重新启动条件满足条件时重新启动(无|故障时|任何)(默认任何)

    --重启尝试之间的重启延迟(ns | us | ms | s | m | h)(默认为5s)

    --用于评估重启策略的重启窗口(ns | us | ms | s | m | h)

    上述重启行为记录在 https://docs.docker.com/engine/reference/run/#restart-policies---restart :

    如果容器成功重新启动(容器启动并运行至少10秒),延迟将重置为其默认值100毫秒。

    您仍然可以选择在容器或主机操作系统中使用另一个流程管理器,这可能适合您的需要(upstart、systemd、supervisor、monit等等)。一些建议: https://docs.docker.com/config/containers/start-containers-automatically/#use-a-process-manager

        2
  •  0
  •   Loïc    7 年前

    我刚刚想出了一个窍门,那就是去掉 ,然后跑 docker-compose 具有 watch

    watch -n 0 docker-compose up
    

    现在,每次运行之间约有2.5秒。

    所以,这不是真正令人满意的,如果只有一个服务关闭(?),但更接近我想要的,会发生什么。真正的解决办法是受欢迎的。

    推荐文章