在组"usergroup1"中以名称"username1"的用户启动docker容器时.
并且该容器在本地文件系统上具有卷的文件/文件夹:例如.
$username1>docker run -v /homes/username1/output:output outputter
使用root作为所有者创建文件.
我需要在Dockerfile或启动选项中做些什么来确保输出文件夹中的文件rigth与localuser:group相同,在这种情况下username1:usergroup1?
如本项目所述:
默认情况下,我们的docker容器以root用户身份运行.因此
root
,即使在退出容器之后,容器创建或修改的文件也将由用户拥有.
要避免此问题,必须使用非root用户运行容器.如果主机用户的UID不是1000(或0,对于root),则用户应在运行docker时指定其UID,例如
docker run -d -p 8787:8787 -v $(pwd):/home/$USER/foo \ -e USER=$USER -e USERID=$UID rocker/rstudio
避免更改主机上链接卷中的权限
这可行,因为该项目Dockerfile在启动容器时创建了一个具有相同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