将卷挂载到 sudo 无法访问的 docker

时间:2021-02-02 10:30:43

标签: linux docker dockerfile

我正在尝试将卷安装到运行 ubuntu 18.04 的计算集群上的 docker。该卷位于我的用户有权访问的已挂载文件系统上,但 sudo 没有。我对这个集群有 sudo 权限。我使用这个命令:

docker run -it --mount type=bind,source="$(pwd)"/logs,target=/workspace/logs tmp:latest bash

结果是这个错误:

docker: Error response from daemon: invalid mount config for type "bind": stat /home/logs: permission denied.
See 'docker run --help'.

在我的本地机器上安装卷工作正常,其中 sudo 和我都可以访问我想要安装的驱动器,这让我相信问题确实在于服务器上的 sudo 没有我想要的驱动器的权限挂载到docker中。

我尝试过的:

  • 运行安装后步骤 $ sudo groupadd docker && sudo usermod -aG docker $USER

  • 使用 sudo 运行 docker

  • 使用 --privileged 运行 docker

  • 使用 --user $(id -u):$(id -g) 运行 docker

  • 在 dockerfile 中使用 USER $(id -u):$(id -g) 设置用户(插入实际值)

有没有办法在此设置中挂载卷或更改 dockerfile 以使用我的个人用户正确访问驱动器?任何帮助将不胜感激。

顺便说一句,在 docker 中,我只需要对卷进行读取访问,以防发生任何变化。

1 个答案:

答案 0 :(得分:0)

容器由以 root 运行的 Docker 守护进程创建。这就是为什么即使您以自己的用户身份运行容器或 docker 命令它仍然不起作用的原因。

您或许可以run the daemon as your own user(无根模式)。

您还可以考虑更改挂载选项(在主机系统上),以便主机上的 root 用户确实具有访问权限。如何做到这一点取决于文件系统的类型。