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