2017-08-24 62 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 /或其他任何地方。所有其他配置文件都需要進行修改,以便從正確的目錄中進行包含。