如何在Dockerfile中声明一个命名卷?

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

我正在寻找相当于Dockerfile的

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

所有我设法通过Dockerfile得到相当于

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

我认为这只是不被支持; 然而, 医生说这个

VOLUME指令创build一个具有指定名称的挂载点,并将其标记为从本机主机或其他容器中持有外部安装的卷。

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

这是不可能的。 我认为这些文件的措词可能会误导。

这有点不清楚。 它使用该名称创build一个挂载点,但实际的文件path不使用该名称。 如果您执行docker inspect {container-name} ,您将看到如下名称: "Destination": "/mnt/something",实际位置如"Source": "/var/lib/docker/volumes/cb80c7802244dd3669eed8afb7d94b61366844d80677eb180fa12002db04ea7c/_data",

这是因为Dockerfile不绑定到特定的主机,并且不能确定主机卷path是否存在。 您需要在run (或等效)语句中执行此操作。 如果您需要在脚本中使用该信息或类似信息,则可以使用API​​或docker inspect来查找容器创build后容器的位置。

在Dockerfile中声明该卷可确保数据将持续存在,并可供主机使用 – 即使该位置不是预设的。