Dockerfile中VOLUME的用途是什么

问题描述 投票:60回答:1

我正在努力深入了解Docker的数量,并且我很难弄清楚差异/用例:

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

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

如果有人理解得很好,请解释我!

docker volume
1个回答
48
投票

卷是存储在/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 - How to access a volume not attached to a container?”。 使用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!
© www.soinside.com 2019 - 2024. All rights reserved.