我有一个包含日食的码头图像。我在名为 eclipse 的帐户下运行图像中的eclipse。我想用我的工作区目录启动映像,将主机绑定到容器中。不幸的是,容器内安装的卷的所有者不是 eclipse 。安装的卷只保留主机的UID和GID。
有没有办法控制UID和GID是容器中安装的卷?
答案 0 :(得分:10)
我相信在这一点上无法将UID和GID设置为docker中的挂载选项。但至少有两种解决方法:
匹配主机和容器中所有者/用户的UID和GID。在您的情况下,如果主机上的所有者ID和GID是1000,请确保容器中拥有用户的uid / gid具有相同的UID和GID,在本例中为1000。
使用文件访问控制列表命令getfacl
- 获取容器上工作区目录所有者的uid / gid,并使用setfacl
命令授予此id读/写权限主人。您必须在主机上运行setfacl。这样,acl权限将传播到容器。我不建议在容器级别进行任何所有权更改,因为这会破坏主机上的所有权,并且下次从映像启动容器时不会保留它。
请记住,在文件权限方面,只有numeric id
很重要。
有用的链接 - permission inside containers
答案 1 :(得分:0)
使工作空间可以写入世界是否可以接受?我相信没有办法改变挂载目录的uid / gid,所以唯一的选择是在主机和容器之间匹配uid / gid(讨厌:()
有关uid / gid的信息,请参阅https://github.com/docker/docker/issues/7198