如何在CoreOS重新启动后自动重启Docker容器?

假设Docker守护进程在操作系统重启时被任何init.d或systemd类似进程自动重启,那么重启一个或多个Docker容器的首选方法是什么? 例如,我可能有一些反向代理或数据库服务器后面的Web服务器。

CoreOS使用systemd来pipe理长时间运行的服务:

如果使用docker -d -r启动守护进程,它将重新启动守护进程停止之前运行的所有容器。 这将成为下一版本的默认行为。

对我来说有效的是在容器{run -d …}命令中join--restart='always'

我所见过的唯一文档是Docker的主机集成文档 ,这些文档对于细节等有点轻松。

基本上,它build议使用-r=false启动守护进程,并使用systemd(如果您使用的是CoreOS以外的版本,则可以使用upstart)。

对于想要自动重启--restart容器的用户,在运行时没有指定--restart标志(默认为“no”),可以使用docker update命令添加以下三个选项之一:

  • 在故障
  • 除非,停止
  • 总是

看到这个职位的细节。 人们always重启标志的问题,可以考虑使用on-failure或者unless-stopped选项。

使用RestartRestartSec使其工作:

 # Restart after crash Restart=on-failure # Give the service 10 seconds to recover after the previous restart RestartSec=10s 

查看文档 。