如何在重新启动容器时在Docker中重复使用相同的卷?
我有一个Dockerfile在最后声明一个卷如此
VOLUME /data
现在,当我构build并运行这个容器时,我确实得到了一个新的卷,它创build并挂载在/data
。
这是非常好的,但我希望能够停止这个容器,然后再次运行,并确保与其数据相同的音量重新装回。
我怎样才能做到这一点?
理想情况下,同样的命令将创build卷,如果它不存在,并重用它,如果它已经存在。
如果您想在容器的生命周期之外保存数据,则需要在容器外创build容量。 一种select是创build一个“数据容器”,如文档中所述 :
docker create -v /data --name my-data busybox /bin/true
这将创build一个容器(名为my-data
)。 它基于busybox
图像,但是因为我们使用的是create
而不是run
我们实际上并没有启动任何东西。 该容器仅用于向其他容器提供卷。
然后,当我们启动另一个容器时,我们可以使用--volumes-from
选项访问该容器, --volumes-from
docker run
:
docker run --volumes-from my-data ...
现在你的容器在容器存在后仍然存在,只要你的my-data
容器没有被删除,它就会一直存在。
或者,您可以简单地将一个主机目录挂载到容器中的/data
上,如下所示:
docker run -v /path/on/host:/data ...
这个选项也在上面链接的文档中描述。