如何创建与主机用户具有相同文件权限的docker镜像/容器

时间:2016-01-05 11:36:20

标签: docker

以具有名称' username1'的用户身份启动docker容器时在群组' usergroup1'。

并且该容器在本地文件系统上具有卷的文件/文件夹: 例如

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

使用root作为所有者创建文件。

我需要在Dockerfile或启动选项中做些什么来确保输出文件夹中的文件rigth与localuser:group相同,在这种情况下username1:usergroup1?

2 个答案:

答案 0 :(得分:6)

this project中所述:

  

默认情况下,我们的docker容器以root用户身份运行。因此,即使在退出容器后,容器创建或修改的文件也将由root用户拥有   要避免此问题,必须使用非root用户运行容器。

     

如果主机用户的UID不是1000(或0,对于root),则用户应在运行docker时指定其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 :(得分:1)

你将不得不等待user namespace support,希望在今年晚些时候。