我有个奴隶在詹金斯的管道里。从映像具有最近版本的docker,但服务器版本非常旧。我不知道Jenkins是如何启动容器的,也不知道jenkins用于码头服务器的是什么。我创建了一个非常简单的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")
}
}“停靠版本”命令的输出是:
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以使用更新的版本?
编辑。下面是programmerq的解决方案,但我将在这里添加一些细节。Jenkins是作为kubernetes容器运行的,并且没有安装对接器,但是Jenkins以某种方式共享了从Kubernetes主机节点到Jenkins管道奴隶容器的对接守护进程。我的kubernetes集群(运行在AWS上,使用kops创建)默认带有一个旧版本的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发布于 2018-05-16 17:54:39
您似乎正在将/var/run/docker.sock从jenkins主机共享到容器中。
当您的18.03.1-ce docker客户端连接到该/var/run/docker.sock套接字时,它正在与运行在jenkins主机上的码头进行对话。
如果希望升级该坞守护进程,则应按照与jenkins正在运行的平台相关的docker安装/升级说明进行操作。
升级主机的dockerd后,容器中的docker客户端将看到最终安装的任何版本。
https://stackoverflow.com/questions/50376061
复制相似问题