docker 卷 docker 文件

docker volumes in dockerfiles

我想 运行 我的云在一个 docker 容器中,并将容器外的数据存储在一个卷中。这样当我的容器被销毁或移除时,数据仍然存在。

docker container run -v /path/to/src:/path/to/target imageName:tag 传递音量参数时 运行 没有任何问题。

如何将 srctarget 目的地传递到 docker 文件中?

VOLUME /path/to/target 将创建一个源位于 var/lib/docker 某处的卷,这是我不想要的。

简答:你不能。

长答案:你在这里试图做的基本上是反对图像的可移植性。 Docker 文档明确指出这是不可能的,如下所示:https://docs.docker.com/engine/reference/builder/

“主机目录在容器中声明 run-time:主机目录(挂载点)本质上是 host-dependent。这是为了保持图像的可移植性,因为给定的主机目录不能保证在所有主机上都可用。因此,您不能从 Docker 文件中挂载主机目录。VOLUME 指令不支持指定 host-dir 参数。您创建或 运行 容器时必须指定挂载点。"

听起来您想要容器中的默认文件,您可以使用 COPY 指令将文件从本地机器复制到容器映像中,将这些文件放入容器中。然后可以 over-ride 使用 -v 参数将文件装入的目录替换为 local-host 目录挂载,当您 start/run 容器时:

例如

COPY ./files/source/swagger.json /application/resources/destination/swagger.json

有关更多信息,请参阅