首页 文章

如何在运行Jenkins管道从站时升级docker服务器版本

提问于
浏览
2

我有一个在jenkins管道中运行的奴隶 . 从属映像具有最新版本的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以使用更新版本?

编辑 . programmerq有下面的解决方案,但我会在这里添加细节 . 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

1 回答

  • 2

    您似乎正在将jenkins主机中的 /var/run/docker.sock 共享到容器中 .

    当您的18.03.1-ce docker 客户端连接到该 /var/run/docker.sock 套接字时,它正在与jenkins主机上运行的dockerd进行通信 .

    如果您希望升级该docker守护程序,则应遵循与运行jenkins的平台相关的docker install / upgrade说明 .

    升级主机的dockerd后,容器内的 docker 客户端将看到您最终安装的任何版本 .

相关问题