当前位置:  开发笔记 > 运维 > 正文

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

如何解决《如何创建与主机用户具有相同文件权限的docker镜像/容器》经验,为你挑选了1个好方法。

在组"usergroup1"中以名称"username1"的用户启动docker容器时.

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

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

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

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



1> VonC..:

如本项目所述:

默认情况下,我们的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

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有