2016-11-12 67 views
15

這個實驗試圖建立使用該泊塢文件容器:Dockerfile與碼頭工人,撰寫VOLUME

FROM lambdalinux/baseimage-amzn:2016.09-000 
COPY ./bundle /opt/bundle/ 
VOLUME /bundle 

然後在容器內,創建一個/opt/bundle/file.txt並把一些文字在裏面。但是這個文件沒有顯示在主機的捆綁目錄中,因爲我預計在閱讀Should I include my code with COPY/ADD or a volume最後一段後:

可能有些情況下,您會同時使用這兩個文件。您可以讓圖像包括使用複製代碼,並使用量在撰寫文件,包括從開發過程中主機的代碼。該卷覆蓋圖像的目錄內容。

不是Dockerfile VOLUME與docker-compose.yml相同VOLUME?如果是這樣,在這種情況下,如何做到這一點,以便主目錄中的更改反映在容器目錄中?

我也創建了主機bundle/play.txt上的文件,但沒有在容器內顯示/opt/bundle/...

回答

17

一個VOLUME instruction在dockerfile創建了一個掛載點,但最初只將其映射到多克的內部數據目錄。

爲了將卷映射到主機的文件系統,你需要指定它在主機上的路徑應該被映射到卷。您可以使用volumes parameter在docker-compose文件中執行此操作。 (注意:您可以使用docker-compose創建卷,而無需在Dockerfile中聲明它們。)

請注意,將目錄從主機映射到容器時,主機上的目錄內容將替換容器中的內容,反之亦然。

+0

我可以savely省略dockerfile容積聲明,當我只用compose.yml量定義? – velop

+2

@開發是的,你可以。事實上,它可能會在某些情況下是可取 - 見[文章](https://boxboat.com/2017/01/23/volumes-and-dockerfiles-dont-mix/)。 – augurar

相關問題