docker - 运行 Jenkins Pipeline Slave 时如何升级 docker 服务器版本

标签 docker jenkins jenkins-pipeline

我有一个奴隶在 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 以使用更新版本?

编辑。程序员有下面的解决方案,但我将在这里添加细节。 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

最佳答案

看来您正在将 /var/run/docker.sock 从 jenkins 主机共享到容器中。

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

如果您希望升级该 docker 守护进程,则应遵循与 jenkins 运行平台相关的 docker 安装/升级说明。

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

关于docker - 运行 Jenkins Pipeline Slave 时如何升级 docker 服务器版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50376061/

相关文章:

php - Docker上的Symfony4 Uncaught BadRequestHttpException

Docker swarm 版本升级不会导致宕机

amazon-web-services - 推送到 ECR 时的 Docker 镜像大小与本地不同

git - 当在同一个提交上推送新标签时,jenkins 不会触发构建

linux - 在 groovy 脚本中更改文件扩展名时执行 shell 命令时出现意外标记 '.'

jenkins - <jenkins> 管道触发器中的时区

java - 为什么 Spring 应用程序在使用 docker compose 运行时无法连接到 couchbase

groovy - 从给定的Jenkins View /选项卡中禁用所有Jenkins作业

groovy - 如何将使用 Jenkinsfile (groovy) 中的变量执行的 shell 命令的输出获取到?

ruby - 无法使用 bundle 安装 gems