2017-03-09 50 views
-1

這裏不可複製的是我Dockerfile的相關部分:碼頭工人:對目錄的權限時,文件被複制到卷

RUN cd /path/to/future/volume \ 
&& if [ ! -d "init_data" ]; then tar xvzf init_data.tar.gz; fi \ 
&& chmod 775 init_data 

在我的搬運工,撰寫,我使用了一個名爲卷映射/路徑/ to/future/volume(my-volume:/ path/to/future/volume),因此Docker應該將/ path/to/future/volume中的所有文件複製到我的主機目錄。

複製本身的作品(和所有用戶和組的所有權似乎很好)除了我的chmod 775 init_data沒有應用。

如果創建卷後,我進入容器並啓用「chmod 775 init_data」,它在容器和卷中工作,但我需要在構建時設置此寫入權限。

爲什麼會發生這種情況,我該如何解決這個問題?

+0

在第一次創建卷之後,您是否將chmod添加到了Dockerfile中? – BMitch

+0

好吧,我試圖在「docker-compose up -d」之前刪除音量,並將正確的權限應用於音量內的init_data,所以它都很好。當您使用現有命名卷運行容器時(當卷已經存在時可能根本沒有任何副本),我不確定是否有確切的複製/覆蓋/合併規則? – Tristan

+0

這只是正確的,在卷內存在數據之後沒有卷。如果音量完全沒有,我相信它也會初始化,但如果音量不存在的話。 – BMitch

回答

1

Docker只在空的時候初始化已命名的卷。一旦他們有數據,跳過初始化步驟(否則可能會覆蓋或刪除您的數據)。

因此,要查看從新圖像引入的更改,您不僅需要刪除舊容器,還要刪除舊卷。

請注意,這不適用於主機卷(將直接從docker主機綁定到容器的路徑)。即使空了,主機卷也不會初始化。

相關問題