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