如何创build一个与主机用户具有相同文件权限的Docker镜像/容器

在用户组usergroup1中以用户名'username1'作为用户启动泊坞窗容器时。

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

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

这些文件是以root用户身份创build的。

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

正如这个项目所解释的:

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

如果主机用户具有1000以外的UID(或者0,对于root用户),则用户在运行docker时应该指定他们的UID,例如

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

以避免更改主机上链接的卷的权限

这里的工作原理是因为项目Dockerfile在启动容器时创build了一个具有相同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 

你将不得不等待用户命名空间的支持 ,希望在今年晚些时候。