我有一个带-v / home / dan:/ home / dan:rw的docker容器。当容器将文件写入/ home / dan时,文件由root文件系统中的root拥有。有没有办法让它从容器写入装载卷的文件归主机文件系统上的某个任意用户所有?
答案 0 :(得分:18)
正如François Zaninotto指出的那样,可以使用用户ID。
可以使用 -u 开关为 docker run 命令完成此操作。
例如:
docker run -v /home/dan:/home/dan -u `id -u $USER` IMAGE
答案 1 :(得分:10)
可以使用 -u 开关为 docker run 命令完成此操作。
例如:
docker run -v /home/dan:/home/dan -u `id -u $USER` IMAGE
答案 2 :(得分:5)
跟进mandark回答 - 我会说包含用户组也不错,否则您最终会得到属于user: USER
和group: root
的内容。要成为user:user
,也可以传入组ID,例如:
docker run -v /home/dan:/home/dan -u `id -u $USER`:`id -g $USER` IMAGE
# if it's for the current user, then you can omit the $USER env var
docker run -v /home/dan:/home/dan -u `id -u`:`id -g` IMAGE
答案 3 :(得分:2)
这是可能的。自动化很难,但它是可能的。这是过程:
,运行shell脚本:
现在,容器内生成的每个文件都将使用正确的用户ID和组ID,主机会将它们附加到您的用户。
我已经编写了一个使用make自动化的工具,它被称为make-docker-command。希望这会有所帮助。