我正在使用jenkins容器执行基于此Jenkinsfile的管道:
pipeline {
agent any
tools {
maven 'Maven 3.6.0'
jdk 'jdk8'
}
stages {
stage('Pull from git') {
steps {
checkout scm
}
}
stage('Compile App') {
steps {
sh "mvn clean install"
}
}
stage('Build da Imagem') {
steps {
script {
docker.withTool("docker") {
def readyImage = docker.build("dummy-project/dummy-project-image", "./docker")
}
}
}
}
}
}
在最后阶段,当我尝试构建docker映像时,我得到了这个Error。 是否可以在jenkins容器中构建docker映像?
答案 0 :(得分:1)
您的管道执行代理无法与docker守护进程通信,因此您需要对其进行正确配置,并且有以下三种方法(我知道):
1)为您的代理提供docker安装
2)从https:/$JENKINS_URL/configureTools/
3)如果使用Kubernetes作为协调器,则可以在管道的开头添加podTemplate定义,然后使用它,这里是一个示例:
// Name of the application (do not use spaces)
def appName = "my-app"
// Start of podTemplate
def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(
label: label,
containers: [
containerTemplate(
name: 'docker',
image: 'docker',
command: 'cat',
ttyEnabled: true)],
volumes: [
hostPathVolume(hostPath: '/var/run/docker.sock', mountPath: '/var/run/docker.sock'),
hostPathVolume(hostPath: '/usr/bin/kubectl', mountPath: '/usr/bin/kubectl'),
secretVolume(mountPath: '/etc/kubernetes', secretName: 'cluster-admin')],
annotations: [
podAnnotation(key: "development", value: appName)]
)
// End of podTemplate
[...inside your pipeline]
container('docker') {
stage('Docker Image and Push') {
docker.withRegistry('https://registry.domain.it', 'nexus') {
def img = docker.build(appName, '.')
img.push('latest')
}
希望对您有帮助