当前位置: 首页 > 面试题库 >

Dockerfile中VOLUME的作用是什么

夏骞尧
2023-03-14
问题内容

我想加深对Docker容量的了解,并且很难弄清以下内容的差异/用例:

  • docker volume create命令
  • docker run -v /path:/host_path
  • 文件中的VOLUME条目Dockerfile

我特别不明白如果将VOLUME条目与-v标志结合在一起会发生什么。


问题答案:

卷是存储在 /var/lib/docker/volumes/...

  • 您可以在Dockerfile中声明它,这意味着每次从映像启动容器时,即使没有任何选择,也会创建该卷( -v

  • 您可以在运行时声明它docker run -v [host-dir:]container-dir
    结合使用两个(VOLUME+ docker run -v)意味着您可以将主机文件夹的内容挂载到容器中保留的卷中/var/lib/docker/volumes/...

  • docker volume create无需定义Dockerfile,构建映像和运行容器即可创建卷。它用于快速允许其他容器安装该体积。

如果您已在卷中保留了某些内容,但是此后删除了该容器(除非使用docker rm
-v,否则默认情况下不会删除其关联的卷),则可以将所述卷重新附加到新容器(声明相同的音量)。

请参阅“ Docker-如何访问未连接到容器的卷?”。使用docker volume create,可以轻松地将命名卷重新附加到容器。

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!


 类似资料:
  • 问题内容: 以下是我的“ Dockerfile”的内容 在此文件中,我期望“ VOLUME。/ usr / src / app”指令将主机上当前工作目录的内容安装在要安装在容器的/ usr / src / app文件夹中的主机中。 请让我知道这是正确的方法吗? 问题答案: 官方Docker教程说: 数据卷是一个或多个容器中的一个特别指定的目录,绕过联合文件系统。数据量为持久性数据或共享数据提供了几

  • 下面是我的“DockerFile”的内容

  • 我试图更深入地了解Docker的卷,我很难弄清楚以下方面的差异/用例: docker volume create(docker卷创建)命令 docker run-v/path:/host\u路径 Dockerfile文件中的卷条目 我特别不理解如果将卷条目与v标志结合在一起会发生什么。

  • 本实验尝试使用此Docker文件构建容器: 然后在容器内部,创建一个< code >/opt/bundle/file . txt 并在其中放置一些文本。但是,在阅读了“我应该使用复制/添加还是卷包含我的代码”后,该文件并没有像我预期的那样出现在主机上的捆绑目录中。最后一段: 在某些情况下,您可能希望两者都使用。您可以使用COPY让图像包含代码,并在开发过程中使用组合文件中的卷来包含来自主机的代码。

  • 问题内容: 我的Dockerfile创建一个目录,将其chown,然后再列出该目录。该目录仍归root用户所有。这是为什么? 这是Dockerfile: 这是“ docker build”的输出: Docker版本1.2.0,构建fa7b24f 主机运行Ubuntu 12.04,但具有3.13.0-36通用内核。 问题答案: 回答我自己的问题:它声明为卷。如果取出VOLUME指令,则将生效。 此外

  • 问题内容: 有人可以帮我理解一下两者之间的区别吗: 输入命令(图像构建层) 和 发出 -v命令时的参数(容器构建层)。 参数对我来说很清楚,它只是将目录从主机公开到容器,反之亦然,但是在行为上有何不同? 问题答案: 该参数和关键字几乎是相同的。您可以使用具有与相同的行为。 如同 但是-v还有更多用途,其中之一是映射到该卷的位置: 所以问题是:in中有什么用? 容器文件系统由层组成,因此在其中写入比