如何在没有使用Docker进行主机安装的情况下共享特定文件?

时间:2017-08-24 17:23:36

标签: 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/的原始内容被我的卷的内容所遮蔽:

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

是否可以在不使用主机安装的情况下解决此问题?

1 个答案:

答案 0 :(得分:1)

安装Docker卷时,它们会隐藏挂载点上的所有先前内容。

因此,必须将卷安装在单独的目录中,例如/ etc / nginx / extra /或其他任何位置。需要调整所有其他配置文件,以便从正确的目录中创建包含。