我有一个容器,我希望在不使用主机安装的情况下将文件暴露给另一个容器。
在我的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 :(得分:1)
安装Docker卷时,它们会隐藏挂载点上的所有先前内容。
因此,必须将卷安装在单独的目录中,例如/ etc / nginx / extra /或其他任何位置。需要调整所有其他配置文件,以便从正确的目录中创建包含。