docker - VOLUME 命令在 Dockerfile 中的作用是什么?

标签 docker dockerfile

我很难理解 VOLUME(https://docs.docker.com/engine/reference/builder/#volume) 的附加优势。

在 Dockerfile 中可以使用 mkdir 创建目录。一旦创建了目录,我们就可以处理它。为什么要指定一个 VOLUME(挂载)并分配给该目录? VOLUME 安装有什么优势?我试图在没有 VOLUME 的情况下在这里了解我们会错过什么。

对我来说它看起来像一个多余的功能,但我可能错了。

最佳答案

VOLUME 命令将指定容器中的安装点。此挂载点将映射到主机上的位置,该位置在创建容器时指定,或者如果未指定,则从 /var/lib/docker/volumes 中创建的目录中自动选择。 .

如果选择作为挂载点的目录包含任何文件,则这些文件将被复制到此卷中。与 mkdir 相比的优势在于,它会在容器终止后将文件持久保存到主机上的某个位置。

似乎有些人质疑您为什么要使用 VOLUME 命令,因为它会创建一个匿名卷。匿名卷不再有太多用处,基本上是 Docker 在可以命名卷之前的早期产物。您通常会在创建容器时指定卷名:

docker container run -v my-volume:/data image_tag

在本例中,/data是容器中的挂载点,my-volume是本地主机上的卷。如果 my-volume该命令运行时不存在,则在本地主机上创建。

关于docker - VOLUME 命令在 Dockerfile 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43981040/

相关文章:

docker - 自动图像生成检测失败。错误:找不到组件映射。考虑将Dockerfile添加到工作区,然后重试

bash - 在运行容器之前运行bash命令

docker - Hyperledger Fabric 使用 go sdk 在 CouchDB 中存储交易

Docker 构建时参数

ruby - 为什么 "bundle install --path"工作时 "bundle install"中断?

docker - 在特定卷上安装 Docker

docker - 无法打开在端口上运行的 docker 应用程序

docker - 使用Zookeeper和Kafka在容器之间连接失败

javascript - 我如何让主机和容器使用Docker读取/写入相同的文件?

python - 将 Python 诗歌与 Docker 集成