我已经设置了一个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用户身份运行(如果我可以某种方式以用户身份运行,其他功能是否会中断)?我知道我总是可以通通的,但是我想知道是否有更好的方法。谢谢。
答案 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。