将Docker容器还原为原始映像而不重新启动它?

use*_*458 13 testing automated-tests docker

通常情况下,人们都在想让Docker在他们的容器中保存数据,并且有大约两千万个关于如何做到这一点的问题,但我是一个测试人员,我想把我刚刚做的所有垃圾转储到我的数据中并恢复原状到我所知的状态(又名我的形象).

我知道我可以通过根据我的图像旋转一个新容器来做到这一点,但这迫使我断开连接并重新连接到我的容器的任何网络连接,这是一个巨大的痛苦.

是否可以将正在运行的容器还原为原始映像而不重新启动它?

Rya*_*her 6

遗憾的是,当它运行时,您将无法恢复或更改图像。您需要停止正在运行的容器并将其删除。一旦您的卷不再附加到任何容器,运行该命令docker volume prune将销毁当前未附加到容器的所有卷。

然后,您只需从映像重新启动 docker 容器即可,然后您将重新开始。

我还发现这篇文章在我学习docker时是一个很好的参考:https: //web.archive.org/web/20190528002402/https ://medium.com/the-code-review/top-10-docker-命令-you-cant-live-without-54fb6377f481


Mic*_*ael 1

要恢复到原始状态,您必须重新启动容器 - 这很重要,因为容器映像只是一堆文件,实际运行的容器必须启动一些进程,因此,您无法在运行时恢复容器,因为该过程很可能会出现问题。

因此,回答你的问题 - 重新启动容器,docker 镜像只需要几毫秒即可启动 - 其余时间是进程启动。

  • 不幸的是,简单地重新启动容器(即使是不将其数据写入卷的容器)并不能删除更改。我必须在我的图像上调用“docker run”才能获取带有新图像的容器。`docker restart` 或 `docker stop/start` 是不够的。 (5认同)
  • 仅当映像未创建卷时,这才有效。如果映像具有卷命令,则无论重新启动,数据都将保留。 (2认同)