Unix 如何在没有主机挂载的情况下与Docker共享特定文件?
我有一个容器,我想从中向另一个容器公开文件,而不使用主机装载 在我的Dockerfile中,在复制必要的文件后,我将Unix 如何在没有主机挂载的情况下与Docker共享特定文件?,unix,docker,dockerfile,Unix,Docker,Dockerfile,我有一个容器,我想从中向另一个容器公开文件,而不使用主机装载 在我的Dockerfile中,在复制必要的文件后,我将/etc/nginx/目录声明为卷: COPY ./src/frontend/config/nginx.conf /etc/nginx/nginx.conf COPY ./src/frontend/config/sites-available/default /etc/nginx/sites-enabled/default VOLUME ["/etc/nginx/"] 但由于整个
/etc/nginx/
目录声明为卷:
COPY ./src/frontend/config/nginx.conf /etc/nginx/nginx.conf
COPY ./src/frontend/config/sites-available/default /etc/nginx/sites-enabled/default
VOLUME ["/etc/nginx/"]
但由于整个目录充当一个卷,因此/etc/nginx/
的原始内容被我的卷的内容所掩盖:
dk run --volumes-from other_container -it --rm nginx:1.12.1 /bin/bash
> ls /etc/nginx
> nginx.conf sites-enabled
这是我想避免的事情。然而,Docker似乎并不真正支持将现有文件作为卷公开
VOLUME ["/etc/nginx/nginx.conf"]
如果按上述方式使用卷,则会收到以下错误消息:
cannot mount volume over existing file, file exists /var/lib/docker/overlay2/b557a0d1ef5026f581f7ee69321de854d8f77b935c0442458f26cada855e5bf2/merged/etc/nginx/nginx.conf
不使用主机装载是否可以解决此问题?装载Docker卷时,它们会隐藏装载点上以前的任何内容
因此,必须将卷装入单独的目录,例如/etc/nginx/extra/或任何其他目录。需要调整所有其他配置文件,以便从正确的目录进行包含。在其他地方装载,符号链接到位?您可以将其符号链接到另一个文件夹,然后将文件夹卷装到名称容器。对于另一个容器,您将提供此命名容器