2016-01-05 43 views
2

在用戶組'usergroup1'中以名爲'username1'的用戶身份啓動Docker容器時。如何創建與主機用戶具有相同文件權限的碼頭服務器圖像/容器

這容器有文件/本地文件系統中的文件夾,體積: 如。

$username1>docker run -v /homes/username1/output:output outputter 

這些文件是以root用戶身份創建的。

我需要在Dockerfile或啓動選項中做些什麼來確保輸出文件夾中的文件與localuser:group相同,在這種情況下,username1:usergroup1?

回答

2

this project解釋說:

默認情況下,我們的搬運工容器中運行root用戶。即使在退出容器後,由容器創建或修改的文件也將由root用戶擁有。
爲了避免這個問題,有必要使用非根用戶運行容器。

如果主機用戶具有比1000之外的UID(或0,爲根)中,用戶應當在運行時搬運工指定他們的UID,例如

docker run -d -P -v $(pwd):/home/$USER/foo \ 
    -e USER=$USER -e USERID=$UID rocker/rstudio 

避免更改的權限,鏈接卷的主機

這裏說的工作,因爲這project Dockerfile,啓動容器時,creates a user with the same uid(名稱並不重要)

## (Docker cares only about uid, not username; diff users with same uid = confusion) 
if [ "$USERID" -ne 1000 ] 
## Configure user with a different USERID if requested. 
    then 
     echo "creating new $USER with UID $USERID" 
     useradd -m $USER -u $USERID 
     mkdir /home/$USER 
     chown -R $USER /home/$USER 
1

你將不得不等待user namespace support,希望今年晚些時候。

+1

我沒有提到用戶命名空間的原因是,因爲它允許具有「其是外*用戶和組ID的獨特的範圍*由主機系統使用的傳統的用戶和組範圍」。我雖然OP是在與他的容器中的主機uid相同的* uid之後。 – VonC

+0

鏈接已損壞! –

相關問題