【问题标题】:Docker Why are permissions wrong after bind mount?Docker 为什么绑定挂载后权限错误?
【发布时间】:2021-05-17 04:14:20
【问题描述】:

我在容器中将主机 /tmp/docker 安装到 /home/vault/tmp/,但容器中的用户 vault 没有写入权限,即使在我的主机上,/tmp/docker 设置为 777 并且uidgid 值在主机和容器中也设置为相同。如何解决此问题并确保我的用户 vault 具有写入/所有者权限?

主机

$ ls -la /tmp/docker/
total 8
drwxrwxrwx  2 ron  ron  4096 Feb  5 19:34 .
drwxrwxrwt 12 root root 4096 Feb 13 09:49 ..
ron@ENGDEV:~/novax-prs/docker$ id -u; id -g
1003
1003

来宾

$ ls -la /home/vault/tmp/
total 8
drwxr-xr-x 2 root  root  4096 Feb 13 06:47 .
drwxr-xr-x 1 vault vault 4096 Feb 13 18:06 ..
vault@novax_prs_build:~$ id -u; id -g
1003
1003

绑定挂载

docker run -it \
           -e LOCAL_USER_ID=`id -u` \
           --user "$(id -u):$(id -g)" \
           -v ${dir}:/home/vault/ccimx6ulstarter \
           -v /tmp/docker:/home/vault/tmp:Z \
           ${name}

有趣的是,/home/vault/ccimx6ulstarter/ 目录的用户在容器中设置了正确的权限。

【问题讨论】:

  • 不久前我看到了这个问题,this 是问题所在。有帮助吗?
  • 不,不幸的是,在路径后面添加:Z 似乎对我不起作用,我将行更改为-v /tmp/docker:/home/vault/tmp:Z,但在容器内仍归root 所有
  • 也许你想要--user "$(id -u):$(id -g)"
  • 我已将其添加到我的 run 命令中,但仍然不行,我还更新了顶部的原始帖子。

标签: docker permissions mount


【解决方案1】:

在主机用户的主目录中创建了一个~/tmp_docker/,并将其与-v绑定挂载,在容器中获得了正确的权限并将使用它,并且可以在我的容器中将它用作~/tmp/

这么说,我不确定为什么我的主机的/tmp/docker/ 不会绑定正确的权限。

【讨论】:

    【解决方案2】:

    您的 /tmp 文件夹可能使用 tmpfs,它的行为与 ext4 不同,尤其是在 SELinux 标签方面(使用 :Z 选项)。

    尝试使用位于 ext4 文件系统上的文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2018-10-18
      • 2017-05-09
      • 1970-01-01
      • 2020-07-26
      • 2018-12-29
      • 2017-06-30
      相关资源
      最近更新 更多