Kubernetes集群中Docker内部的Docker

时间:2020-04-11 22:30:06

标签: docker kubernetes chown

我正在尝试在裸机上的Kubernetes集群中运行Jenkins吊舱。

我试图在docker中实现docker,因为我需要在管道中构建Docker映像,因此我将/var/run/docker.sock作为卷安装到了容器中。 我遇到的问题是,每次在Jenkins管道中运行docker命令时,我都会收到权限拒绝错误。

我检查了节点上的/var/run/docker.sock所有权

srw-rw---- 1 root docker 0 Apr 10 19:47 /var/run/docker.sock

然后我在运行的容器中检查了它:

srw-rw---- 1 root 116 0 Apr 10 21:33 /var/run/docker.sock

现在我有点困惑。为什么我看到一个ID?我检查了主机上docker组的groupID。恰好是116。我猜想逻辑上的假设是,容器内部的所有权与主机上的所有权完全相同。尽管主机上的docker组在容器内没有被视为docker组。那是正确的假设吗?那么问题是:我做错了什么?

我的Jenkins Dockerfile如下

FROM jenkins/jenkins:2.230-jdk11
....
UN apt-get update -qq  && apt-get install -y docker-ce docker-ce-cli containerd.io

#The following 3 commands I tried to fix the issue, but it did not help
RUN touch /var/run/docker.sock
RUN chown jenkins:docker /var/run/docker.sock
RUN usermod -aG docker jenkins

USER jenkins

我认为这些组可以是 -以某种方式在主机操作系统和来宾操作系统之间映射(不确定是否以此方式工作(对吗?)) 要么 -应该将jenkins用户添加到主机操作系统上的docker组,但是我找不到方法。 可能可以按照here的建议使用pod start上的命令来完成操作,但是随后我将不得不以具有权限的用户身份运行pod,这可能不是最好的主意。 要么 -其他

请告知,建议采用什么方式进行此工作。

谢谢

PS

可以解决此问题
  securityContext:
    ..
    runAsGroup: 116
    ..
部署定义中的

,但这不是有效的解决方案。

0 个答案:

没有答案