簡體   English   中英

Docker主機安裝的卷權限

[英]Docker host-mounted volume permissions

在我們的內部測試環境中,我們從基於vSphere的服務器中配置CentOS VM。 這些圖像是帶有包和相關配置的vanilla 7.1,以支持通過LDAP進行身份驗證。 我在xfs文件系統上安裝了帶有OverlayFS驅動程序的Docker 1.13.1。

FROM centos:7
RUN useradd dockeruser
USER dockeruser
VOLUME /data

在主持人:

mkdir data
echo "hello from host" > data/host-msg.txt
docker run -ti --rm -v $(pwd)/data:/data testimage bash

在容器內:

echo "hello from container" > /data/container-msg.txt
bash: /data/container-msg.txt: Permission denied

在容器中列出目錄內容:

drwxr-xr-x   2 12345 13000    25 Feb 12 21:36 data
drwxr-xr-x   5 root  root    360 Feb 12 21:36 dev
drwxr-xr-x   1 root  root     62 Feb 12 21:36 etc

data目錄以uid / gid格式顯示所有權,而不是username / groupname。

我看了很多文章,描述這種行為的問題和不同的 策略解決辦法

但是 在我當地的Fedora 25開發系統中,我沒有這種行為。 我執行上面的過程,能夠寫入主機掛載/數據掛載,目錄列表顯示用戶名/組名。

/
    drwxrwxr-x   2 dockeruser dockeruser  4096 Feb 12 04:36 data
    drwxr-xr-x   5 root       root         360 Feb 12 22:00 dev
    drwxr-xr-x   1 root       root        4096 Feb 12 22:00 etc

/data
    -rw-rw-r--   1 dockeruser dockeruser    21 Feb 12 22:04 container-msg.txt

為了使一切盡可能與實驗室配置相似,我通過libvirt在我的開發系統上建立了一個CentOS 7.1 VM,並再次得到了相同的結果 - 沒有弄亂uid / gid映射,用戶命名空間,什么都沒有。 從容器內部寫入主機安裝的卷Just Worked,開箱即用。

有什么可能解釋這種行為? 實驗室VM上的LDAP是否以某種方式在文件系統級別引入權限問題? 有什么具體的東西,我可以要求我們的運營團隊檢查或暫時禁用嘗試解決此問題?

最后也許是最重要的一點,如果主機安裝卷上的權限問題對於我來說在一個干凈的CentOS或Fedora工作站上似乎根本不是問題那么為什么它仍然是Docker社區中的一個東西呢? 這些設置中是否有一些配置與其他人使用的配置(包括我的團隊的實驗室虛擬機)根本不同,事情才有效?

數據目錄以uid / gid格式顯示所有權,而不是username / groupname。

這是因為您的容器沒有此uid / guid的映射(檢查/ etc / passwd)。 實際上,實際文件總是有uid / guid。 它只是應用程序/操作系統的一個功能,可以返回名稱。 嘗試從容器內部/外部stat路徑。 他們應該有相同的uid / guid

stat /data
stat /path/on/host

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM