【问题标题】:Docker user permissions in mounted volumes安装卷中的 Docker 用户权限
【发布时间】:2018-08-06 21:22:15
【问题描述】:

我正在运行一些需要挂载本地卷并在那里进行更改的 docker 映像。我正在使用典型的

启动容器

docker run -it -v $(pwd):/root/foo ${IMAGENAME} ./script.sh

问题是主机目录中的新文件具有root权限/所有者。我宁愿避免任何配置,除了在命令行中添加一些东西。

执行后更改文件权限不够干净,并且可能需要root权限。

理想情况下,我想要--userns-remap 之类的东西,但在我执行 docker run 并将容器根目录映射到启动容器的用户时应用。

有什么建议吗?

【问题讨论】:

  • 不确定您的问题是什么。默认情况下,容器内的所有文件都将归容器的 root 用户所有。这是你不想要的行为吗?如果是这样,您必须在容器中创建一个新用户,并 chown/chmod 您需要的文件夹。最好的方法是通过带有 RUN 指令的 Dockerfile。
  • 我更新了问题。我在想--userns-remap 之类的东西在docker run 中是可能的
  • @Aserre 问题是挂载卷中的任何新文件在主机目录中都具有 root 作为所有者,即使容器作为普通 myuser123 启动也是如此@

标签: bash docker


【解决方案1】:

您有不同的选择来解决这个问题。 1)不修改docker镜像或Dockerfile,可以改变文件夹中文件的权限 "$ sudo chmod -R 777 /path/foo"

或者,如果您想确保获取此映像的人没有权限,请对 Dockerfile 进行一些更改,例如更改容器内的权限或将文件写入 /home/foo 文件夹。

我希望你明白该怎么做,或者至少有一个想法。

【讨论】:

  • 好吧..我实际上正在寻找一种更清洁的方式来做到这一点。选项 1 只是修补问题并需要 root 权限。选项 2 需要知道启动容器的用户的 UID/GID。目前,我实际上是在继承 UID/GID 并创建一个用户,但我想类似于用户命名空间的东西应该是可能的。
猜你喜欢
  • 2016-03-25
  • 2018-04-22
  • 1970-01-01
  • 2019-12-21
  • 2019-08-12
  • 2018-10-23
  • 2020-08-07
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多