Jenkins码头工人在GCP / Kubernetes的Docker

时间:2016-06-05 22:05:37

标签: jenkins kubernetes google-cloud-platform

是否有建议的方法从加载到Kubernetes的容器中启动'docker build'命令?

IE。旋转Jenkins容器(从社区图像中),然后确保在该容器中安装docker,以便发出'docker build'命令。

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

2 个答案:

答案 0 :(得分:3)

从Kubernetes Pod访问docker守护程序有两种方法。

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

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

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

答案 1 :(得分:1)

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