2017-07-04 94 views
1

我有一個Docker容器,裏面安裝了MinGW編譯器。我想用它來開發。這是我想編譯,測試,編輯,編譯,測試...如何輕鬆訪問容器內部和外部的數據?

該容器也將用於CI管道,並最終用於生產生產構建。通過使用相同的容器,我們確保構建環境的一致性。

我的主機有我的代碼編輯等開發工具,而容器有編譯器,所以顯然文件需要共享。

我已經設置了一個卷。不幸的是,我不能用我的用戶帳戶訪問:

# ls -lAFd /var/lib/docker 
drwx--x--x 11 root docker 4096 Jul 4 09:11 /var/lib/docker/ 
# ls -lAFd /var/lib/docker/volumes/mingw_build/_data 
drwxr-xr-x 6 alastair docker 4096 Jul 3 14:31 /var/lib/docker/volumes/mingw_build/_data/ 

我的用戶是一羣碼頭工人,但一羣碼頭工人沒有閱讀的/ var/lib中/泊塢窗的權限,因此無法訪問該卷的_data目錄。

我曾嘗試作弊,並使用sudo來調整文件夾權限,以便組碼頭已經讀取路徑下的所有權限,但這些權限會在重新啓動時被重寫 - 毫無疑問,當碼頭服務器啓動時。

任何人都可以找出解決辦法嗎?我試過使用符號鏈接,但它們總是繼承路徑元素的最嚴格的權限。

回答

1

當我最初讀它看起來像只名爲卷的文件可以使用,不過我已經發現,目錄,還可以被用作來源。例如: -

mkdir /home/alastair/mingw_build 
docker run -v /home/alastair/mingw_build:/home/mingw_build/build mingw_build 

因爲我想用相同的容器和運行腳本CI測試爲地方發展,我在運行腳本設置在我的.bashrc它的環境變量,並進行測試。如果它存在,我使用它指向的目錄,如果沒有,我使用一個命名的容器,如果需要的話創建它。

0

Docker包含用戶/組重新映射功能 - 基於用戶命名空間 - 默認情況下未啓用。

按照說明進行操作啓用泊塢窗守護「userne重新映射」:https://docs.docker.com/engine/security/userns-remap/

+0

看起來像是一種可能性,但名稱空間目錄仍在/ var/lib/docker下,因此仍可能無法訪問。當我有機會時,我會嘗試一下。 – AlastairG

+0

使用在您鏈接的文章中指定的配置創建/etc/docker/daemon.json(它以前不存在)之後,docker服務始終無法啓動。刪除文件,一切都很好。 – AlastairG

+0

您當前的碼頭版本是什麼? –