首页 > 解决方案 > AKS 中的 Docker-in-Docker

问题描述

我们的任务是设置基于容器的 Jenkins 部署,在 AKS 中执行此操作的压力很大。我们的 Jenkins 需要能够构建其他容器。通常我会通过将 /var/run/docker.sock 和 /usr/bin/docker 安装到我正在运行的容器中来使用 docker-in-docker 方法来处理这个问题。

我不知道这在 AKS 中是否可行。GitHub 上的一些论坛帖子表明主机安装是可能的,但在最新的 AKS 版本中被破坏。我对 Helm 图表的有限实验遇到了这个错误:

Error: release jenkins4 failed: Deployment.apps "jenkins" is invalid:
[spec.template.spec.initContainers[0].volumeMounts[0].name: Required 
value, spec.template.spec.initContainers[0].volumeMounts[0].name: Not 
found: ""]

我所做的更改是更新volumeMounts:jenkins-master-deployment.yaml 部分并包括以下内容:

  -
  type: HostPath
  hostPath: /var/run/docker.sock
  mountPath: /var/run/docker.sock

根据 AKS 安全设置,我正在尝试做的事情是否可能,或者我只是搞砸了我的图表?

如果无法将 docker 套接字安装到 AKS 中的容器中,那很好,我只需要一个明确的答案。

谢谢,

标签: jenkinsazure-container-serviceazure-aks

解决方案


好吧,我们不久前为 VSTS(云 TFS,现在称为 Azure DevOps)构建代理做了这个,所以它应该是可能的。我们这样做的方式也是安装 docker.sock

对我们来说相关的部分是:

    ... container spec ...
    volumeMounts:
    - mountPath: /var/run/docker.sock
      name: docker-volume
  volumes:
  - name: docker-volume
    hostPath:
      path: /var/run/docker.sock

推荐阅读