问题 如何在Dockerfile中声明命名卷?


如果我使用 VOLUME 在docker文件中,它会创建一个匿名卷。有没有办法从dockerfile创建命名卷?

我正在寻找相当于Dockerfile的

docker run -v my-named-volume:/mnt/something repo/my-img

我通过Dockerfile设法获得的相当于

docker run -v /mnt/something repo/my-img

我认为它不受支持;然而, 文件 这说

VOLUME指令创建一个挂载点 指定的名称 并将其标记为从本机主机或其他容器保存外部安装的卷。

这似乎意味着有一种方法来命名音量,但它没有说明如何


5474
2017-07-11 02:49


起源

简短的回答,这是不可能的 按设计 你可能会发现有用的 这个 发帖了解原因 - ira


答案:


这是不可能的。我认为文档措辞可能有误导性。


6
2017-07-11 03:16





有点不清楚。它使用该名称创建安装点,但实际文件路径不使用该名称。如果你做了 docker inspect {container-name},你会看到如下名称: "Destination": "/mnt/something", 和实际位置如: "Source": "/var/lib/docker/volumes/cb80c7802244dd3669eed8afb7d94b61366844d80677eb180fa12002db04ea7c/_data",

这是因为Dockerfile没有绑定到特定主机,并且无法确定主机卷路径是否存在。你需要这样做 run (或同等的)声明。你可以使用api或 docker inspect 如果您需要在脚本或类似内容中使用该信息,请在创建容器后找出卷的位置。

在Dockerfile中声明卷可确保数据保持不变并且可供主机使用 - 即使该位置未预设。


5
2017-07-11 04:06