docker - 你如何禁用容器的自动重启?

新手上路,请多包涵

我可以使用 --restart=always 启用自动重启,但是在我停止容器后,如何关闭该属性?

我通常运行一个网络服务器并通常映射端口 80:

 docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

但有时我想运行更新版本的映像,但我想保留旧容器。问题是,如果有多个容器 --restart=always ,则只有一个(随机?)启动,因为它们都在争夺主机上的端口 80。

原文由 Brad Grissom 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

您可以使用 --restart=unless-stopped 选项,如@Shibashis 所述,或更新重启策略(这需要 docker 1.11 或更高版本);

请参阅 docker updateDocker 重启策略 的文档。

 docker update --restart=no my-container

更新现有容器的重启策略( my-container

原文由 thaJeztah 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用以下内容禁用所有自动重启(守护程序)容器。

 docker update --restart=no $(docker ps -a -q)

使用以下命令禁用重新启动单个容器。

 docker update --restart=no the-container-you-want-to-disable-restart

理由

Docker 提供重启策略来控制容器是在退出时自动启动,还是在 Docker 重启时自动启动。这在 Docker 运行关键服务时通常非常有用。

笔记

如果您使用的是 docker-compose,这可能很有用。

restart no 是默认的重启策略,在任何情况下都不重启容器。当指定 always 时,容器总是重新启动。如果退出代码指示出现故障时错误,则故障时策略会重新启动容器。

 restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

原文由 FlyingV 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进