【问题标题】:Docker-in-Docker in AKSAKS 中的 Docker-in-Docker
【发布时间】:2018-10-24 16:08:14
【问题描述】:

我们的任务是设置基于容器的 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: ""]

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

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

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

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

谢谢,

【问题讨论】:

    标签: jenkins azure-container-service azure-aks


    【解决方案1】:

    好吧,我们之前为 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
    

    【讨论】:

    • 我认为现在 AKS 不允许挂载 docker.sock,因为它们正在弃用 docker 并且仅使用 containerd 来管理容器运行时。目前我没有看到在 AKS 中运行 Jenkins 和构建 docker 容器(docker-in-docker)的方法,但也许有人对如何实现这一点有提示?
    猜你喜欢
    • 2019-07-29
    • 2021-08-21
    • 2019-07-22
    • 2017-12-03
    • 2022-09-28
    • 2022-06-11
    • 2018-08-27
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多