2014-03-28 66 views
6

好像在容器內文件系統沒有'acl',因此'setfacl'將不起作用。它不會讓我重新安裝它,我甚至不能運行'df -h'。如何在Docker容器中使用setfacl?

我需要setfacl的,因爲我做根從我的網站擁有所有的文件,我給web服務器用戶寫入權限,只喜歡緩存,日誌幾個目錄等

我能做些什麼?

回答

11

好消息是Docker支持ACL。 但默認情況下,Docker使用AUFS堆棧容器和圖像; AUFS不支持ACLS。

如果您告訴Docker使用Device Mapper(LVM)進行存儲,您可以在容器中使用setfacl

與適當的選項啓動您的碼頭工人守護進程:

docker -d --storage-driver=devicemapper --daemon=true

來源:https://groups.google.com/forum/#!topic/docker-user/165AARba2Bk

df -h不會爲一個不同的,不相關的工作的原因所在:它依賴於/etc/mtab,不存在默認情況下。在您的容器中,創建一個鏈接procfs,即可解決此問題:

ln -s /proc/mounts /etc/mtab 
+1

有趣!但是切換到LVM沒有任何缺點嗎?每次我讀到Docker的好處時,都提到了AUFS,儘管我沒有完全理解它。無論如何,在源代碼中,你鏈接到它說的是我正在考慮的內容,然後再嘗試:使用一個卷,我仍然需要在同一個地方共享這些文件。我只是不確定這是如何工作的,因爲當我運行這些命令時,我在Dockerfile中,所以我還沒有我的卷,因爲我在構建映像後啓動cointainer守護進程時添加了這些卷。 – ChocoDeveloper

+1

AUFS和LVM(dm-thin)是非常不同的實現,這是一個很大的話題。但在將Docker守護進程切換到它之後,您不應該看到任何功能差異。下行:不太穩定,但他們聲稱0.9和0.9.1版本已經有了很大的提升。另外,請注意,卷也接受綁定掛載:您可以將主機上的現有目錄綁定到容器,我想這可以讓您在映像構建時「看到」相同的內容。 – mbarthelemy

+1

從文檔:「請注意,由於Dockerfile的可移植性和共享目的,[dock mount]不可用於Dockerfile」。更改存儲驅動程序看起來不錯,我發現可以在/ etc/default/docker中輕鬆修改這些選項。但是我需要重建所有圖像,所以當我這樣做時,我意識到了一些東西:我正在使用容器!這意味着我不需要像以前那樣擔心權限,所以現在我只需chown/chmod我想讓web服務器用戶寫入的文件夾,不需要使用setfacl。謝謝你的幫助! – ChocoDeveloper

相關問題