以具有名称' username1'的用户身份启动docker容器时在群组' usergroup1'。
并且该容器在本地文件系统上具有卷的文件/文件夹: 例如
$username1>docker run -v /homes/username1/output:output outputter
使用root作为所有者创建文件。
我需要在Dockerfile或启动选项中做些什么来确保输出文件夹中的文件rigth与localuser:group相同,在这种情况下username1:usergroup1?
答案 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,希望在今年晚些时候。