我可以从Dockerfile挂载一个卷吗?

是否有可能从一个Dockerfile挂载一个卷? 如果不是最好的办法做到这一点?

我知道你可以在命令提示符下使用正常的Docker命令来做到这一点,但有没有更好的方法来完成这个工作?

不幸的是,在图像构build过程中不可能这样做。

我想可能是便携的原因? 我不太确定 – 如果有人可以进一步解释这个问题,那将会很好。

但我的猜测是,如果Docker允许用户在构build上挂载卷,那么Doc​​ker将不得不预测和处理不同types的文件系统,例如Windows和Unix。 另外如果它应该被用于安装的目录path不存在于另一个主机上?

无论如何,我不太清楚你的用例是什么,但是你应该能够使用ADD或者COPY命令将文件从主机的文件系统迁移到映像中,并将其移动文件用于安装等其他目的。

看到:
https://docs.docker.com/engine/reference/builder/#/add

问:那么最好的方法是什么?
答:我认为没有安装音量的标准方法。 我通常在docker-compose文件中定义我的挂载。

看到:
https://docs.docker.com/compose/compose-file/#/volumes-volume-driver

Dockerfile的上下文中,您对主机资源的访问权限有限,实际上需要构build容器的映像。 为了说明,您应该能够安装主机卷,启动容器或访问其资源,这可能等同于可以在当前环境中为您构build的映像。

如果您确实需要在构build期间将主机资源挂载为卷,则可能需要查看Packr 。 但是,如果你想容器在容器启动时可用,那么通常使用docker run --name=Foo $ARGS