Docker权限托管容器中的用户卷

时间:2017-03-13 08:43:31

标签: docker volume

我正在寻找一个"清洁"共享卷并共享权限的解决方案。我的意思是,如果可能,我希望我的容器中的用户与启动它的本地用户相同。

目前,我正在使用:

docker run --rm -v ~/Projects/:/projects/ mycontainer

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

处理此问题的最佳方法是什么?如果可能,我不想在Dockerfile中创建用户信息,因为我想与同事共享此容器,我想避免本地用户和容器用户之间的任何权限问题。 / p>

谢谢

2 个答案:

答案 0 :(得分:1)

您可以在docker run命令中指定用户:

--user, -u      Username or UID (format: <name|uid>[:<group|gid>])

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

答案 1 :(得分: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文件夹中的内容。