【问题标题】:Jenkins Docker in Docker on GCP/KubernetesGCP/Kubernetes 上的 Docker 中的 Jenkins Docker
【发布时间】:2016-10-05 11:03:08
【问题描述】:

是否有推荐的方法从加载到 Kubernetes 的容器启动“docker build”命令?

IE。启动 Jenkins 容器(来自社区镜像),然后确保 docker 安装在该容器中,以便您可以发出“docker build”命令。

我已经阅读了各种方法,例如 DIND(Docker 中的 Docker)容器以及 Jenkins 容器和 DIND 容器之间的运行链接。当然,对于 Kubernetes,情况会有所不同。

【问题讨论】:

    标签: jenkins kubernetes google-cloud-platform


    【解决方案1】:

    从 Kubernetes Pod 访问 docker daemon 有两种方法。

    1. 您可以在容器内公开运行在主机上的 docker 守护程序(这是 kubernetes 用来启动容器的 docker 守护程序)。为此,您需要修改 Pod 规范,为 docker daemon 套接字添加一个 hostPath(通常为 /var/run/docker.sock)。现在,您可以在容器中安装 docker 并访问主机的 docker 守护进程。

    2. 第二种方法是使用 Docker-in-Docker (DinD)。在这种方法中,您可以使用sidecar container 的概念在 docker daemon 中运行 docker。必须将 pod 中的主容器配置为与 sidecar 容器中的 docker 守护进程通信。您可以通过将环境变量DOCKER_HOST 设置为tcp://localhost:2375 来做到这一点。您可以在我的 blog article about DinD on Kubernetes

    3. 上找到完整的 Pod 规范以及关于这两种方法之间差异的更多详细信息

    【讨论】:

      【解决方案2】:

      我不知道这是否是推荐的方式,但您可以看看 DEIS dockerbuilder 组件是如何做到这一点的。 DEIS 以DEIS Workflow 的名义将他们的 PaaS 移植到 Kubernetes。 dockerbuilder是允许DEIS客户端在集群中构建Docker镜像的模块。

      【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2018-10-05
      • 1970-01-01
      • 2017-07-03
      • 2019-03-31
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      相关资源
      最近更新 更多