【发布时间】:2017-11-28 16:53:54
【问题描述】:
如何让 17.05+ 的 docker 在我的 Jenkins 执行器中运行?
我已按照教程进行操作:
- https://cloud.google.com/solutions/jenkins-on-container-engine
- https://cloud.google.com/solutions/jenkins-on-container-engine-tutorial
- https://cloud.google.com/solutions/continuous-delivery-jenkins-kubernetes-engine
- https://cloud.google.com/solutions/configuring-jenkins-kubernetes-engine
一切都按照教程中的说明进行。
我有一个(工作的)多阶段 Dockerfile,我正在尝试在 Jenkins 中构建它,但它需要最新的 Docker 版本 (> 17.05)。
我找不到更新的方法...
在我的管道中,如果我运行 docker version,无论我做什么,我总是得到 1.13.1:
docker version
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.8.1
Git commit: 092cba3
Built: Wed Aug 30 20:31:05 2017
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.8.1
Git commit: 092cba3
Built: Wed Aug 30 20:31:05 2017
OS/Arch: linux/amd64
Experimental: false
在我应该用作奴隶的容器中,docker run -it 'image-name' bash:
docker version
Client:
Version: 17.11.0-ce
API version: 1.34
Go version: go1.8.3
Git commit: 1caf76c
Built: Mon Nov 20 18:36:37 2017
OS/Arch: linux/amd64
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
在Jenkins > Configure Jenkins 我设置了 0 个执行程序,只有 1 个使用我新推送的镜像的容器模板(我已经检查过了,它是最新的),“始终拉取镜像”复选框检查...
当我将标签设置为我的Kubernetes Pod Template(例如docker-edge)并尝试使用标签限制执行者时:
-
node('docker-edge')在我的 Jenkinsfile 中没有任何改变 - 在我的作业配置中,设置
Pipeline Model Definition>Docker Labeltodocker-edge` 会使其停止并且找不到任何执行程序
【问题讨论】:
-
您的集群版本是多少?您可以通过 SSH 连接到您的 GKE 虚拟机之一并运行
docker version吗?我不确定 jenkins 使用什么来构建图像,但如果它使用主机 docker-engine,那么您需要确保您的主机版本足够新以拥有该 docker 版本。
标签: jenkins google-cloud-platform jenkins-pipeline google-kubernetes-engine