在docker中,将文件作为非root用户写入已挂载的文件系统?

zsi*_*son 25 docker

我有一个带-v/home/dan:/ home/dan:rw的docker容器.当容器将文件写入/ home/dan时,文件由root文件系统中的root拥有.有没有办法使它从容器写入装载卷的文件由主机文件系统上的某个任意用户拥有?

man*_*ark 19

正如FrançoisZaninotto指出的那样,可以使用用户ID.

这可以通过为docker run命令使用-u开关来完成.

例如:

docker run -v /home/dan:/home/dan -u `id -u $USER` IMAGE
Run Code Online (Sandbox Code Playgroud)


qkr*_*ger 13

编辑:自从我的原始答案说它无法完成以来,这已经改变了.根据Mandark的回答:

这可以通过为docker run命令使用-u开关来完成.

例如:

docker run -v /home/dan:/home/dan -u `id -u $USER` IMAGE
Run Code Online (Sandbox Code Playgroud)

  • 请参阅 mandark 的答案,这是现在的正确答案(也许自从最初发布以来它已更改) (2认同)

小智 8

跟随曼达克答案 - 我会说包括用户组也是好的,否则你最终会得到属于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
Run Code Online (Sandbox Code Playgroud)