Docker重启策略
参考:https://docs.docker.com/engine/reference/run/#restart-policies---restart
使用--restart
Docker run 上的标志,您可以指定容器在退出时应该或不应该如何重新启动的重新启动策略。当容器上的重启策略处于活动状态时,它将显示为Up
或Restarting
。
Docker 支持以下重启策略:
策略 | 描述 |
---|---|
no | 不自动重启(默认模式) |
on-failure[:max-retries] | 重启因出错停止的容器(非0退出码)。可以通过指定max-retries来限定docker daemon的最大尝试重启次数 |
always | docker daemon会无限尝试重启退出的容器(无论以什么退出码退出)。手动停止容器后,容器策略不再生效。除非重启docker daemon |
unless-stopped | 与always 类似,区别在于手动停止容器后,就算重启docker daemon,容器策略也不再生效。 |
在每次重新启动之前添加一个增加的延迟(是先前延迟的两倍,从 100 毫秒开始),以防止服务器泛滥。这意味着守护进程将等待 100 毫秒,然后等待 200 毫秒、400、800、1600 等等,直到达到on-failure
限制、最大延迟 1 分钟,或者当您docker stop
或docker rm -f
容器时。
如果容器重新启动成功(容器启动并运行至少 10 秒),则延迟将重置为其默认值 100 毫秒。
您可以指定 Docker 在使用on-failure策略时尝试重新启动容器的最大次数。默认情况下,Docker 将永远尝试重新启动容器。容器的(尝试)重启次数可以通过docker inspect
. 例如,获取容器“my-container”的重启次数;
$ docker inspect -f "{{ .RestartCount }}" my-container
# 2
或者,获取容器上次(重新)启动的时间;
$ docker inspect -f "{{ .State.StartedAt }}" my-container
# 2015-03-04T23:47:07.691840179Z
将--restart
(restart policy) 与--rm
(clean up) 标志结合使用会导致错误。在容器重新启动时,附加的客户端会断开连接。请参阅本页后面有关使用--rm
(clean up)标志的示例。