Docker容器的重启策略
参考:https://www.jianshu.com/p/8fab9290c21b
在运行docker run
命令启动容器时,可以通过--restart
指定容器退出时的重启策略。
当重启策略在一个容器上生效时,通过docker ps
观察,该容器的状态不是Up就是Restarting。也可以通过docker event
检查容器具体的重启策略。
Docker(18.07)目前支持以下几种重启策略:
策略 | 描述 |
---|---|
no | 不自动重启(默认模式) |
on-failure[:max-retries] | 重启因出错停止的容器(非0退出码)。可以通过指定max-retries来限定docker daemon的最大尝试重启次数 |
always | docker daemon会无限尝试重启退出的容器(无论以什么退出码退出)。手动停止容器后,容器策略不再生效。除非重启docker daemon |
unless-stopped | 与 |
使用重启策略时注意以几点:
重启策略只有在容器启动成功之后才会生效。这里的启动成功指的是容器至少运行了10秒,docker deamon已经开始监控它了。这防止了一个根本无法启动成功的容器陷入重启死循环。
手动停止容器后,重启策略会在docker deamon重启或容器被手动重启后生效,同样为了防止陷入重启死循环。
这里的重启策略是容器级别的,swarm service的重启策略请参考flags related to service restart.
如果运行是没有设置--restart='xx',可以运行docker update containername --restart='xx'来修改容器运行重启策略