dockerfiles中的docker卷

问题描述

我想在docker容器中运行我的云,并将数据存储在容器外部的卷中。这样,当我的容器被破坏或删除时,数据仍然是持久的。

docker container run -v /path/to/src:/path/to/target imageName:tag处传递volume参数时,它运行正常,没有任何问题。

如何将srctarget目标传递到dockerfile中?

VOLUME /path/to/target将创建一个卷,该源的源在var/lib/docker中某个我不希望的位置。

解决方法

简短的回答:您不能。

长答案:您在这里要做的本质上是反对图像的可移植性。 Docker文档专门指出这是不可能的,如此处所示:https://docs.docker.com/engine/reference/builder/

“主机目录是在容器运行时声明的:主机目录(挂载点)本质上是依赖于主机的。这是为了保留映像的可移植性,因为不能保证给定的主机目录可以在所有主机上都可用。因此,您不能从Dockerfile内安装主机目录。VOLUME指令不支持指定host-dir参数。创建或运行容器时必须指定安装点。”

,

听起来好像您想要容器中的默认文件,您可以使用COPY指令将默认文件放入容器中,以将文件从本地计算机复制到容器映像中。然后,可以在启动/运行容器时使用-v参数覆盖放置文件的目录,以使用本地主机替换目录安装:

例如

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

有关更多信息,请参见Docker mount to folder overriding content