预期行为:
我们想让docker container执行小任务。假设我们有10个container,每个只休眠5秒。我们想让这些container继续快速重新启动。如果你有一个docker,由10个container组成,每个container休眠5秒,然后死亡。
some-worker1:
image: some-worker
build: ./some-worker
restart: always
我们希望这些容器在死亡后立即重新启动。
观察到的行为:
如果运行watch docker ps
,您会注意到重新启动时间缓慢增加。运行几分钟后,容器将仅在一分钟后重新启动。并且它们将始终在一分钟后重新启动。
猜测:
我想docker-engine或者任何重启container的东西都有一些策略来控制重启的速度。它们开始快速重启,所以可能一些资源变得稀缺,docker不得不减慢重启速度,或者作为一种优化减慢重启速度,但是设置最大值为一分钟。
1条答案
按热度按时间nc1teljy1#
我想这就解释了它:
“在每次重新启动之前添加一个不断增加的延迟(是以前延迟的两倍,从100毫秒开始),以防止淹没服务器。这意味着守护程序将等待100毫秒,然后是200毫秒、400、800、1600,依此类推,直到达到故障时限制,或者当您对容器执行docker stop或docker rm -f操作时。
如果容器成功重新启动(容器启动并运行至少10秒),延迟将重置为其默认值100毫秒。”
https://docs.docker.com/engine/reference/run/#restart-policies---restart