【发布时间】:2018-05-16 16:41:17
【问题描述】:
我有一个奴隶在詹金斯管道中运行。从镜像有最新版本的 docker,但服务器版本很旧。我不知道 Jenkins 是如何启动容器的,或者 jenkins 将什么用于 docker 服务器。我创建了一个非常简单的 jenkins 文件:
#!/usr/bin/groovy
podTemplate(label: 'jenkins-pipeline',
containers: [
containerTemplate(name: 'jnlp', image: 'myrepo/jnlp-docker:2.0')
],
volumes:[
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
]){
node ('jenkins-pipeline') {
sh("docker version")
}
}
那个“docker version”命令的输出是:
Client:
Version: 18.03.1-ce
API version: 1.26 (downgraded from 1.37)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:17:14 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:36:34 2017
OS/Arch: linux/amd64
Experimental: false
那么服务器版本 1.13.1 来自哪里?如何升级 Jenkins 以使用更新的版本?
编辑。程序员有下面的解决方案,但我会在这里添加细节。 Jenkins 作为 kubernetes 容器运行并且没有安装 docker,但是 Jenkins 以某种方式将 docker 守护程序从 Kubernetes 主机节点共享到 Jenkins Pipeline 从容器。我的 kubernetes 集群(在 AWS 上运行,使用 kops 创建)默认带有旧版本的 docker。我不得不用更高的 docker 版本更新我的 kubernetes 集群。步骤是
kops edit cluster
#kops edit cluster opens vi. Add docker property as shown below and save
spec:
docker: #add docker config
logDriver: json-file #required property. Errors out when missing
version: 17.09.0 #caution, only specific docker versions are supported
kops update cluster
kops rolling-update cluster --yes
【问题讨论】:
标签: docker jenkins jenkins-pipeline