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!