当前位置: 首页 > 知识库问答 >
问题:

如何在restart=“always”模式下重新启动现有Docker容器?

拓拔阎宝
2023-03-14

最初从图像运行Docker容器时,可以指定以下选项:

--restart="always"

这确保了如果容器由于某种原因停止,Docker守护进程始终会重新启动它。因此,您可以像这样运行容器:

docker run --restart="always" <IMAGE>

您还可以通过指定现有Docker容器的容器ID重新启动该容器,即:

docker start <CONTAINER ID>

但是,我不能确定是否有可能改变现有的容器,原来没有运行--restart="总是"选项,将其转换为将来总是重新启动。

目前,我能想到的唯一方法是将容器另存为新映像,然后使用--restart=“always”选项将该映像作为新容器运行。这真的是正确的方法吗?

编辑:我最初可能没有说清楚的是,我正在考虑容器自最初运行以来发生了变化的情况,这些变化需要被持久化。因此,仅仅从原始映像运行一个新容器是不够的。

共有3个答案

姜乐家
2023-03-14

更新:这有助于重新启动。但是将它设置为否,它会被重置为总是,容器会再次启动!:(我将把这个答案留在这里,以防有人知道这是如何工作的。我必须靠近!

伙计们,我找到了复制容器等的最黑客的解决方案。

vi /var/lib/docker/containers/$(docker检查-f'{{。id}}'$ContainerID)/hostconfig.json

搜索“重新启动政策”。设置为"不","总是"等

也许有人可以用剧本把它包起来!?

不管怎么说,这段json和配置文件。json允许您修改创建容器时遗漏的所有内容。

叶鹭洋
2023-03-14

好的,为了回答我自己的问题,似乎不可能只使用--restart=always重新启动同一个容器,因为这是第一次运行容器时必须执行的操作,而不是启动现有容器时可以使用的参数。

有三种可能的解决方法

>

docker提交

docker run-d--restart=始终。。。

如果使用了卷并且所有更改仅限于卷,则可以使用--volumes from参数运行第二个容器,而无需提交映像的新版本。即

  • docker站

然后可以安全地删除容器1,因为当另一个容器继续使用卷时,卷不会被删除。

我猜还有第四种可能性;如果您使用了一个或多个卷,并且您知道对容器所做的更改不在该卷上,那么您必须使用(2)和(3)的组合。

后焕
2023-03-14

我们现在有了docker update,它允许更改正在运行的容器的重启策略。

docker update --restart=always <CONTAINER ID>

还有三种选择:

  • no(默认)
  • on-失败
  • 除非-停止

有关详细信息,请参阅链接。

 类似资料:
  • 问题内容: 最初从映像运行Docker容器时,可以指定以下选项: 这样可以确保容器由于某种原因停止时始终由Docker守护程序重新启动。因此,您可以像这样运行一个容器: 您还可以通过指定其容器ID来重新启动现有的Docker容器,即: 但是,我无法确定是否有可能更改原本没有使用该选项运行的现有容器,以将其转换为以后始终重新启动。 目前,我能想到的唯一方法是将容器另存为新图像,然后使用该选项将该图像

  • 有没有办法停止以启动的docker容器,如下所示

  • 重启Eclipse restart选项允许用户重启eclipse。 要重新启动eclipse,请单击“文件”菜单,然后选择“ Restart菜单项。 安装插件后,将提示用户重新启动eclipse。 如果他们选择不在那时重新启动,他们可以稍后使用restart选项重启eclipse。 如果eclipse用户界面行为不当,用户可能希望使用此选项重新启动eclipse。

  • 问题内容: 我使用以下命令从映像启动docker容器: 当完成后,容器停止(我想这已停止),但它并没有被删除,因为我可以用这个命令来查看它: 有什么办法可以使用相同的参数将此容器保持由生成的数据? 问题答案: 是的,当初始命令完成执行后,容器将停止。 您可以使用以下方法启动已停止的容器: 如果要查看命令的输出,则应添加选项: PS。有一个,但用于重新启动正在运行的容器-我相信情况并非如此。

  • 我有一个文件,它包含4个容器:redis、postgres、api、worker 在worker的开发过程中,我经常需要重新启动它,以便应用更改。有没有什么好方法可以在不重新启动其他容器的情况下重新启动容器(例如)?

  • 我试着自学Docker和使用Docker compose。yml用来处理图像和合成文件。我已经成功地使用docker compose启动并运行了Wordpress图像。yml up-d通过这里的教程。。。https://docs.docker.com/compose/wordpress/),但只要我对compose文件和docker compose进行更改。yml up-d我再次无法访问更改,必须