Docker:为已经创建的容器添加一个重启策略

我看到Docker已经添加了一些叫做重启策略的东西来处理容器的重新启动,例如,重新启动。

虽然这非常有用,但我看到重启策略命令只适用于docker run而不是docker start。所以我的问题是:

是否有办法将重新启动策略添加到过去已经创建的容器中?

100170 次浏览

有两种方法可以修改RestartPolicy:

  • 找到容器ID,停止整个docker服务,修改/var/lib/docker/containers/ container_id /hostconfig。设置RestartPolicy -> Name为“always”,启动docker服务。
  • docker commit你的容器作为一个新的图像,停止&Rm当前的容器,并用映像启动一个新的容器。

在docker的最新版本中(从1.11开始),你有一个update命令:

docker update --restart=always <container>

使用--restart=always策略将在重新引导时处理现有容器的重新启动。

问题是,如果在运行docker -如何禁用容器上的自动重启?< / >中讨论的新版本的映像时,存在< em > < / em >多个容器--restart=always

尝试自动删除容器时,它存在的put 选项docker run --rm也会与--restart=always . conf产生问题

. policy
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm

所以在这种情况下,最好选择另一个选项:——重启unless-stopped policy。

$ docker run --rm --restart unless-stopped <image>

此策略不会冲突docker run --rm,但如docker文档所述:

它类似于--restart=always,除了当容器停止时 (手动或其他方式),即使在Docker守护进程后也不会重新启动 重启。< / p >

因此,当使用这个--restart unless-stopped策略时,为了确保重新启动正在工作,以防关闭终端时意外停止,执行一次在另一个终端,如下所示:

$ docker ps
$ docker restart <container>

等待前一个shell中的kill进程结束,然后关闭它并只留下(不要退出) 在剩余的终端中再次检查容器是否仍在运行:

$ docker ps

如果它仍在运行,您可以安全地重新启动并再次检查应用程序是否正在重新启动,并查看docker是否干净,没有未使用的多个容器。