删除永久性主机存储上的文件的权限:docker能否以非root用户身份运行?

时间:2019-03-26 21:52:32

标签: docker permissions

我已经设置了一个Docker容器,该容器可装入在主机上持久存储的卷:

docker volume create --name work type=none --opt device=/home/username --opt o=bind
docker container run -it --rm --mount source=work,target=/work

我运行容器并执行操作,所以说:

echo "Hello world" > testfile.txt

当我尝试删除容器从主机终端写入/ work(映射到主机上的/ home / username)的任何文件(例如testfile.txt)时,我得到权限错误,因为它已被写入并拥有根源。

是否可以将Docker设置为以我登录的当前用户身份运行,因此不会出现此权限问题?另外,是否有理由以root用户身份运行(如果我可以某种方式以用户身份运行,其他功能是否会中断)?我知道我总是可以通通的,但是我想知道是否有更好的方法。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将非root用户添加到您的容器中,并将其设置为默认用户:

RUN useradd -m myuser
USER myuser # every command below is executed by myuser
WORKDIR /home/myuser

使用USER root再次切换到root用户。 (docs

要获得删除主机上文件的权限,主机用户和容器用户必须具有相同的用户ID。

要检查用户ID,可以使用id -u <username>。如果ID不匹配,请使用选项-u <userid>创建用户:

RUN useradd -m -u <userid> <username>

有关更多信息,请参见useradd