2017-08-24 59 views
0

我有一个容器,我想将文件公开到另一个容器,而无需使用主机安装。如何使用Docker共享未安装主机的特定文件?

在我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/原始内容由内容阴影我量:

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 

是否有可能解决不使用主机安装这个问题?

+0

挂载到其他位置,符号链接到位? –

+0

您可以将它符号链接到另一个文件夹,然后将该文件夹卷挂载到名称容器。到另一个容器,你将提供这个命名的容器 –

回答

1

当Docker卷被挂载时,它们会隐藏挂载点上的任何以前的内容。

由于这个原因,卷必须安装在一个单独的目录中,例如/ etc/nginx/extra /或其他任何地方。所有其他配置文件都需要进行修改,以便从正确的目录中进行包含。