Aristotle
发布于 2023-03-10 / 10 阅读 / 0 评论 / 0 点赞

Docker容器的重启策略

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

always类似,区别在于手动停止容器后,就算重启docker daemon,容器策略也不再生效。

使用重启策略时注意以几点:

  1. 重启策略只有在容器启动成功之后才会生效。这里的启动成功指的是容器至少运行了10秒,docker deamon已经开始监控它了。这防止了一个根本无法启动成功的容器陷入重启死循环。

  2. 手动停止容器后,重启策略会在docker deamon重启或容器被手动重启后生效,同样为了防止陷入重启死循环。

  3. 这里的重启策略是容器级别的,swarm service的重启策略请参考flags related to service restart.

  4. 如果运行是没有设置--restart='xx',可以运行docker update containername --restart='xx'来修改容器运行重启策略