预期行为:
我们希望Docker容器执行小型作业。假设我们有10个容器,每个容器只能睡5秒钟。我们希望这些能够继续快速重启。如果你有一个码头工具,那么就会定义10个容器,每个容器在这里停留5秒并且会死掉。
some-worker1:
image: some-worker
build: ./some-worker
restart: always
我们希望这些容器在死后立即重新启动。
观察到的行为:
如果您运行watch docker ps
,您会发现重启时间慢慢增加。运行几分钟后,容器只会在一分钟后重新启动。他们将在一分钟后不断重启。
猜测:
我认为docker-engine或其他任何重启容器的策略都有一些重新启动它们的策略。它们开始快速重启,因此可能某些资源变得稀缺,并且docker必须降低重启速度,或者优化会降低重启速度,但会将最大值设置为一分钟。
答案 0 :(得分:2)
我认为这解释了它:
“在每次重启之前添加一个不断增加的延迟(前一个延迟的两倍,从100毫秒开始)以防止服务器泛滥。这意味着守护进程将等待100毫秒,然后200毫秒,400,800,1600,依此类推,直到命中故障限制,或者当您停靠或停靠rm -f容器时。
如果容器成功重启(容器启动并运行至少10秒),延迟将重置为默认值100 ms。“
[https://docs.docker.com/engine/reference/run/#detached-vs-foreground]