我正在尝试绑定挂载 root 拥有的具有 770 权限的目录。我的用户位于具有权限的组中,因此我可以在主机上访问它(读取、写入和执行),但所有权组不是我用户的主要组。但是,当我尝试将目录绑定挂载到在 rootless Docker 中运行的容器中时,我无法访问它。
如果我将目录的组所有权设置为用户的主要组,我就可以在无根 Docker 中访问它。
有没有办法从我的非主要组访问这些目录?
例如,对于主机上这样的目录:
drwxrwx--- 2 root non-primary-group test-directory
$ id
uid=101(example-user) gid=101(primary-group) groups=101(primary-group),102(non-primary-group)
运行时我被拒绝:
$ docker run --rm -it -v ./test-directory:/test-directory ubuntu
root@1d84f2dsgdsf: # cd /test-directory
bash: cd: test-directory/: Permission denied
但如果目录所有权是:
drwxrwx--- 2 root primary-group test-directory
然后一切正常。
答案1
根据其他经验,这似乎是“无根”版本 Docker 中的预期情况。
即使在容器外部你拥有 所拥有的东西user:user
,似乎无根 Docker 总是会root:root
在容器内部使用绑定挂载。
资料来源:
https://forums.docker.com/t/bind-mounting-permissions-with-user-broken-using-rootless-docker/88257
https://forums.docker.com/t/bind-mount-permissions-unexpected-mounting-as-root-root/129328/6
https://docs.docker.com/engine/security/userns-remap/
如果这种额外的复杂性不再与您的工作流程兼容,您最终也可能会考虑回滚到“传统”Docker。例如,卸载“rootless”Docker,然后安装传统的 Docker。