如何在调用之间保存Docker状态数据?

时间:2018-12-27 22:54:26

标签: docker

在以下情况下,您会期望发生什么:下载一些数据库docker映像,创建一些表,添加一些行并关闭容器-再次重新启动容器时数据是否仍然存在?凭直觉,我认为答案是“当然”,它是如此明显,但我不确定它的确如此。我只是阅读了一个postgres图像教程,或者要么在启动时就以某种方式吹散了数据,要么数据不存在。不知道怎么回事。谢谢

1 个答案:

答案 0 :(得分:1)

好的,数据将保留在容器中,直到您显式或隐式(例如,使用docker system prune)销毁它为止。

它如何工作?

让我们说您遵循经典方法,并使用docker run命令启动新容器,例如

docker run ubuntu echo 'Hello' > /hello.txt

ubuntu只是一个例子)

Docker拉出映像ubuntu,创建新容器(没有名称,但具有ID),然后在该容器中获取文件/hello.txt。但是,如果您再次尝试类似的命令,例如

docker run -it ubuntu ls /

您找不到文件,因为它是不同容器,它们是基于同一源图像构建的。

您需要使用ID撤销容器。 ID?认真吗?当然,不是),您可以给您的容器提供易于理解的名称,然后再使用它:

docker run --name foo ubuntu echo 'Hello' > /hello.txt

现在,如果要重用它,只需致电

docker exec foo ls /

这将找到您的容器foo并列出根路径。您将看到您的文件。如果您不希望容器持久存在,请在--rm中使用docker run参数,容器将在退出后立即删除。

因此,要完成:

1)使用docker run --name foo IMAGE

创建命名容器

2)与docker exec foo

重用