Linux docker uid/gid映射在不同主机上更改
我在一个系统上构建了一个docker容器,其中uid=1000,gid=300 然后,当我尝试在jenkins服务器上使用相同的容器时,这些uid/gid由不同的用户和组使用,因此当我尝试在容器中执行命令时,由于权限的原因,它会失败Linux docker uid/gid映射在不同主机上更改,linux,docker,namespaces,cgroups,Linux,Docker,Namespaces,Cgroups,我在一个系统上构建了一个docker容器,其中uid=1000,gid=300 然后,当我尝试在jenkins服务器上使用相同的容器时,这些uid/gid由不同的用户和组使用,因此当我尝试在容器中执行命令时,由于权限的原因,它会失败 如何在用户映射到正确uid/gid的情况下运行容器有几个选项可以处理uid/gid与主机卷的不匹配 在主机目录上打开权限,这通常被安全团队认为是不好的,原因很好,但也很容易做到 为可能使用不同uid/gid运行的每个主机构建一个新映像 改为切换到命名卷。如果不需要
如何在用户映射到正确uid/gid的情况下运行容器有几个选项可以处理uid/gid与主机卷的不匹配
- 在主机目录上打开权限,这通常被安全团队认为是不好的,原因很好,但也很容易做到
- 为可能使用不同uid/gid运行的每个主机构建一个新映像
- 改为切换到命名卷。如果不需要从主机直接访问卷内容,建议这样做
- 修复入口点的权限问题
还有另一个entrypoint解决方案示例,其中我配置了一个Jenkins容器来修复docker gid以匹配已安装的docker套接字:由于对什么的权限而失败?您正在装载主机卷吗?Isf那么,你需要一个主机卷吗?是的,我正在将一个卷从主机装载到容器中以运行一些构建脚本SIM,而不是在容器中使用jenkins,jenkins正在管道步骤中调用一个容器,这意味着工作区中的文件归jenkins所有:jenkins不是我的1000:300,我刚刚将工作区更改为uid/gid所有,以使构建工作,但我想我想将jenkins:jenkins映射到容器中的uid:gid。这可以通过userns remap来完成吗?用户名称空间不会有帮助,默认情况下禁用它们的原因是因为它们会进一步破坏主机装载。提供的链接不是您可以按原样使用的代码的复制和粘贴,而是您可以用来调整容器uid/gid以匹配主机卷装载的uid/gid的技术示例。好的,对我来说,最简单的选择是在主机上复制组gid将jenkins添加到该组中,然后是chmod-Rf g+rwx工作区