假设在重新启动操作系统时,任何init.d或systemd类似进程都会自动重启Docker守护程序,重启一个或多个Docker容器的首选方法是什么?例如,我可能在反向代理或数据库服务器后面有许多Web服务器。
答案 0 :(得分:31)
如果您使用docker -d -r
启动守护程序,它将重新启动守护程序停止之前运行的所有容器。
这将成为下一版本中的默认行为。
答案 1 :(得分:14)
CoreOS使用systemd来管理长时间运行的服务:
答案 2 :(得分:11)
对我有用的是将--restart='always'
添加到容器{run -d ...}命令
答案 3 :(得分:1)
我见过的唯一文件是Docker's Host Integration docs,它们对细节有点了解。
基本上,它建议使用-r=false
启动守护程序并使用systemd(如果您正在使用CoreOS以外的其他内容,则使用upstart)。
答案 4 :(得分:1)
对于想要自动重启docker容器的人,但在运行它时没有指定--restart
标记(默认为' no'),您可以使用docker {{3} }命令添加以下三个选项之一:
有关详细信息,请参阅update。人们在always
重新启动标记时出现问题,可以考虑使用on-failure
或unless-stopped
选项。
答案 5 :(得分:-1)
使用Restart
和RestartSec
使其有效:
# Restart after crash
Restart=on-failure
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s