Dockerfile中VOLUME的用途是什么?
我试图更深入地理解Docker的音量,我很难弄清楚以下的差异/用例:
-
docker volume create
命令 -
docker run -v /path:/host_path
-
Dockerfile
文件中的VOLUME
条目
我特别不明白如果将VOLUME
条目和-v
标志结合起来会发生什么情况。
如果有人理解,请解释我!
卷是存储在/var/lib/docker/volumes/...
的持久数据/var/lib/docker/volumes/...
-
您可以在Dockerfile中声明它,这意味着即使没有任何
-v
选项,每当从映像声明容器时,卷也会被创build( 空 )。 -
你可以在运行时
docker run -v [host-dir:]container-dir
声明它。
结合这两个(VOLUME
+docker run -v
)意味着您可以挂载到/var/lib/docker/volumes/...
容器持久容量的主机文件夹的内容/var/lib/docker/volumes/...
-
docker卷创build创build一个卷,而不必定义一个Dockerfile,并build立一个图像,并运行一个容器。 它用于快速允许其他容器安装所述卷。
如果你在一个卷中保留了一些内容,但是从那时起删除了容器(除非你使用docker rm -v,默认情况下它并没有删除它的相关卷),你可以将这个卷重新附加到一个新的容器中(声明相同的音量)。
请参阅“ Docker – 如何访问未连接到容器的卷? ”。
使用docker卷创build,这很容易将一个命名的卷重新附加到一个容器。
docker volume create --name aname docker run -v aname:/apath --name acontainer ... # modify data in /apath ... docker rm acontainer # let's mount aname volume again docker run -v aname:/apath --name acontainer ls /apath # you find your data back!