容器中Docker卷的主机用户权限问题

3
我希望您能提供一种“干净”的解决方案来共享卷并共享权限。我的意思是,如果可能的话,我希望在我的容器中使用与启动它的本地用户相同的用户。
目前,我正在使用:
docker run --rm -v ~/Projects/:/projects/ mycontainer

它可以工作,但问题是当我的容器在这个卷中写入一些内容时,所有权者是root而不是我本地的用户。

如何处理这个问题是最好的方式?如果可能的话,我不想在Dockerfile中创建用户信息,因为我想与同事分享这个容器,并避免本地用户和容器用户之间的任何权限问题。

谢谢

2个回答

1
您可以在 docker run 命令中指定用户:
--user, -u      Username or UID (format: <name|uid>[:<group|gid>])

如果您使用主机用户的数字UID和GID,则创建的文件将属于该用户。

谢谢您的回答,但是使用这个解决方案,我需要先创建一个具有相同uuid的用户吗?因为当前我的容器正在使用root帐户运行,当我添加--user参数时,它不起作用。我认为这是因为我正在向root用户添加SSH密钥,并且使用用户参数时,我正在使用另一个用户,因此找不到该密钥。 - Matt

1
感谢你的帮助,亨利。
我的完整解决方案如下:
docker run --rm -e USER_ID=$(echo "$UID") -v ~/Projects/:/projects/ mycontainer

我有这个脚本作为入口点值:

#!/bin/bash
adduser -D -u $USER_ID alpine &>/dev/null
cd /projects/
su alpine -c 'mycommand ...."

我的容器可以访问并添加/修改“Projects”文件夹中的内容,权限与本地用户相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接