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

Testing 将Docker容器还原为其原始映像而不重新启动?,testing,docker,automated-tests,Testing,Docker,Automated Tests,通常,人们都想让Docker将数据持久化到他们的容器中,关于如何做到这一点,有大约两千万个问题,但我是一名测试人员,我想扔掉我刚才对数据做的所有废话,并恢复到我已知的状态(即我的图像) 我知道我可以通过基于我的图像旋转一个新容器来实现这一点,但这迫使我断开并重新连接到容器的任何网络连接,这是一个巨大的痛苦 是否可以在不重新启动的情况下将正在运行的容器还原回其原始映像?要还原回原始状态,必须重新启动容器-这一点很重要,因为容器映像只是一堆文件,实际运行的容器必须启动一些进程,因此,您无法在运行时还

通常,人们都想让Docker将数据持久化到他们的容器中,关于如何做到这一点,有大约两千万个问题,但我是一名测试人员,我想扔掉我刚才对数据做的所有废话,并恢复到我已知的状态(即我的图像)

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


是否可以在不重新启动的情况下将正在运行的容器还原回其原始映像?

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


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

不要将卷装入容器。卷,无论是数据装载还是fs装载都是持久的。如果您不保存数据,则可以转到docker重新启动我的容器

遗憾的是,当它运行时,您将无法还原或更改图像。您需要停止运行容器并将其移除。一旦卷不再连接到任何容器,运行命令
docker volume prune
将销毁当前未连接到容器的所有卷

然后,您只需从图像中重新启动docker容器,就可以重新开始


在学习docker时,我还发现这篇文章是一个很好的参考资料:

这只在卷不是由映像创建的情况下有效。如果映像具有卷命令,则无论是否重新启动,数据都将保持不变。不幸的是,仅重新启动容器(即使容器未将其数据写入卷)并不会删除更改。我必须在我的图像上调用
docker run
,以获取具有新图像的容器
docker restart
docker stop/start
是不够的。我应该更清楚一点,我不是说
docker restart
而是说创建一个新的容器。哇,我不知道这篇文章有多旧。为什么今天美国东部时间12:01我的RSS提要上会出现这个问题?你回答的是一个老问题,这没关系。我仍然认为它有价值。谁知道呢,也许有一天我想要的东西会成为可能:)这篇文章的链接已经死了。很抱歉听到亚历克斯。我不能控制所有的网络服务器/博客。这些事情发生了,原作者把它记下来了。它在2019年1月发布时是实时有效的。