Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux docker uid/gid映射在不同主机上更改_Linux_Docker_Namespaces_Cgroups - Fatal编程技术网

Linux docker 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运行的每个主机构建一个新映像 改为切换到命名卷。如果不需要

我在一个系统上构建了一个docker容器,其中uid=1000,gid=300

然后,当我尝试在jenkins服务器上使用相同的容器时,这些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工作区