Как обновить версию док-сервера при работе с подчиненным конвейером Jenkins - PullRequest
0 голосов
/ 16 мая 2018

У меня есть раб, работающий в трубопроводе Дженкинса. У ведомого образа есть последняя версия докера, но версия сервера очень старая. Я не могу сказать, как Дженкинс запускает контейнер или что Дженкинс использует для док-сервера. Я создал очень простой файл 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 для использования более новой версии?

EDIT. У programmerq было решение ниже, но я добавлю детали здесь. Jenkins работал как контейнер kubernetes и не имел установленного докера, но Jenkins каким-то образом разделяет демон docker от хост-узла Kubernetes до подчиненного контейнера Jenkins Pipeline. Мой кластер kubernetes (запущенный на AWS, созданный с помощью kops) поставляется со старой версией докера по умолчанию. Мне пришлось обновить мой кластер 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 Ответ

0 голосов
/ 16 мая 2018

Похоже, что вы разделяете /var/run/docker.sock с хоста jenkins в контейнер.

Когда ваш клиент 18.03.1-ce docker подключается к этому сокету /var/run/docker.sock, он говорит сdockerd, запущенный на хосте jenkins.

Если вы хотите обновить этот демон docker, вы должны следовать инструкциям по установке / обновлению docker, относящимся к платформе, на которой работает jenkins.

Onceвы обновляете dockerd хоста, ваш docker клиент внутри контейнера будет видеть любую версию, которую вы в итоге установили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...