是否有建议的方法从加载到Kubernetes的容器中启动'docker build'命令?
IE。旋转Jenkins容器(从社区图像中),然后确保在该容器中安装docker,以便发出'docker build'命令。
我已经阅读了各种方法,例如DIND(Docker中的Docker)容器以及Jenkins容器和DIND容器之间的运行链接。当然,对于Kubernetes来说,这会有所不同。
答案 0 :(得分:3)
从Kubernetes Pod访问docker守护程序有两种方法。
您可以在容器内公开在主机上运行的docker守护程序(这是kubernetes用来旋转容器的docker守护程序)。为此,您需要修改Pod规范以为docker守护程序套接字添加hostPath(通常为/var/run/docker.sock
)。现在,您可以在容器内安装docker并访问主机的docker守护程序。
第二种方法是使用Docker-in-Docker(DinD)。在此方法中,您可以使用sidecar container的概念在docker守护程序中运行docker。 pod中的主容器必须配置为与sidecar容器中的docker守护程序通信。您可以通过将环境变量DOCKER_HOST
设置为tcp://localhost:2375
来执行此操作。您可以在blog article about DinD on Kubernetes
答案 1 :(得分:1)
我不知道这是否是推荐方式,但您可以查看DEIS dockerbuilder组件如何执行此操作。 DEIS正在以DEIS Workflow的名义将他们的PaaS移植到Kubernetes。 dockerbuilder是允许DEIS客户端在集群中构建Docker镜像的模块。