40

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

4

6 回答 6

33

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

于 2013-09-14T00:27:11.083 回答
14

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

于 2013-09-13T23:04:21.223 回答
13

对我有用的是添加--restart='always'到容器 {run -d ...} 命令

于 2014-09-01T08:37:53.857 回答
2

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

  • 失败时
  • 除非停止
  • 总是

有关详细信息,请参阅此帖子。人们对重新启动标志有问题always,可以考虑使用on-failureunless-stopped选项。

于 2016-06-03T21:14:03.993 回答
1

我见过的唯一文档是Docker 的 Host Integration 文档,它对细节等内容略知一二。

基本上,它建议使用 systemd 启动守护程序-r=false并使用 systemd(或者如果您使用的是 CoreOS 以外的其他东西,则为 upstart)。

于 2014-08-07T19:25:05.633 回答
-1

使用RestartRestartSec使其工作:

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

查看文档

于 2016-02-10T00:34:05.920 回答