2017-03-09 568 views
1

我有一個Synology NAS,它具有docker支持,並且想要運行一些docker容器(我對Docker相當新穎)。例如pocketmine-pm(但我相信我也有其他容器的寫入問題)。如何給Docker容器寫映射卷的chmod權限?

我在主機上創建了一個卷,並將其映射到容器設置中。 (並且在卷映射的Synology泊塢窗設置中,我沒有點擊「只讀」)。

根據Dockerfile在容器中創建一個新用戶'pocketmine',並且該用戶用於啓動服務器。用戶似乎擁有用戶標識1000(新的Linux用戶的第一個UID)。該容器還使用Entrypoint.sh腳本來啓動服務器。

最初容器無法將文件寫入映射目錄。我必須SSH進入主機'chown'UID 1000的目錄:

sudo chown 1000:1000 /volXy/docker/pocketminemp -R 

之後,可以下載和提取存檔。

不幸的是我無法從我的iOS設備連接到服務器。服務器被列爲「在線」,但連接失敗,沒有任何特定消息。然後我檢查了容器的日誌,看到下面的條目(不知道這是否真的可以防止連接,但我會試試看):

[*] Everything done! Run ./start.sh to start PocketMine-MP 
chown: changing ownership of '/pocketmine/entrypoint.sh': Operation not permitted 
chown: changing ownership of '/pocketmine/server.properties.original': Operation not permitted 
Loading pocketmine.yml... 

顯然,容器不能執行chown一個文件,它是以前能夠下載。

有沒有人知道可以做些什麼來解決這個問題?我需要chmod映射的卷,爲什麼我需要chown目錄到UID 1000(主機上並不存在的用戶) - 是否有更好的方法來修復權限?

回答

2

當您運行容器時,您應該能夠使用--user="uid:gid"標誌來指定您希望運行該容器的用戶。

來源:https://docs.docker.com/engine/reference/run/#user

+1

OK,將檢查了這一點,但我相信,我讀的地方運行容器時的Synology不允許通過--user標誌作爲參數 - 但是它比一臺Synology問題一般的碼頭問題。 – Patric