2016-06-08 57 views
0

我想知道是否可以將碼頭中的卷映射到我的Linux主機中的另一個文件夾。我想這樣做的原因是,如果我沒有誤解,默認映射文件夾位於/ var/lib/docker /中,並且我無權訪問此文件夾。所以我正在考慮在創建映像時將其更改爲我有權訪問的主機文件夾(例如/ tmp /)。我現在可以修改Dockerfile,如果這可以在創建圖像之前完成。或者必須在創建圖像或創建容器後完成此操作?如何將本地文件夾映射爲泊塢窗容器或圖像的卷?

+0

我不知道我理解的問題。我聽起來像你沒有root權限,所以你將無法重新配置docker服務。/var/lib/docker文件夾包含的不僅僅是已命名的卷,您是否需要移動所有內容(包括圖像),還是僅移動一個容器使用的一些數據? – BMitch

+0

謝謝@BMitch的回覆!我只想將一個特定的卷映射到一個主機文件夾。我並不需要將所有員工從/ var/lib/docker / – Lubor

回答

0

Docker沒有任何我知道的將命名或容器卷映射回主機的工具,雖然它們只是/ var/lib/docker下的子目錄,所以編寫自己的工具不是不可能的,但你需要root權限來運行它。請注意,通過訪問主機上的docker,可能有很多方法可以訪問主機上的root權限。如果源和目標位於同一個文件系統上,則應創建到目標文件夾的硬鏈接。

訪問指定卷的docker方式將創建一個一次性容器來訪問您的文件。您甚至可以創建額外的主機捲來導出數據。例如。

docker run -it --rm \ 
    -v test:/source -v `pwd`/data:/target \ 
    busybox /bin/sh -c "tar -cC /source . | tar -xC /target"' 

其中「test」是您要導出/複製的命名卷。您可能還需要在容器中運行chown -R $uid /target以將所有內容都更改爲主機上的uid。