【问题标题】:Jenkins Pipeline : docker not found with Maven docker imageJenkins Pipeline:使用 Maven docker 映像找不到 docker
【发布时间】:2020-09-10 10:27:54
【问题描述】:

我有一个运行良好的 Jenkins 管道,但它取决于 JDK 和 maven 安装的工具。过去很少有这些 JDK 和 maven 工具的名称被更改的情况(例如 Maven 3.6.2 -> Maven 3.6.3 并导致我的管道失败。

stage ("build") {
        withMaven(jdk: 'Java SE 8u221', maven: 'Maven 3.6.3', tempBinDir: '') {
            sh 'mvn clean package jib:dockerBuild verify'
        }
    }

我希望我的管道独立于安装的工具。所以我重写了我的 Jenkins 管道,如下所示,以提供 maven 的 docker 映像(因为 JDK 与它捆绑在一起)

pipeline {
   agent {
        docker {
            image 'maven:3-alpine' 
            args '-v /root/.m2:/root/.m2' 
        }
    }

    stages {
        stage('Checkout') {

            steps {
                git branch: "master", url: "repo url", credentialsId: 'id'
            }
         }

          stage ("build") {
              steps {
                sh 'mvn clean package jib:dockerBuild verify'
              }
        }
    }
}

但现在我收到一个错误Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild (default-cli) : Build to Docker daemon failed, perhaps you should make sure Docker is installed and you have correct privileges to run it

在我提供了一个 maven docker 镜像后,docker daemon 似乎不可见。

【问题讨论】:

  • 嗨 Tarun..,您正在尝试使用 maven 工具构建 docker 映像。为此,您需要在您的 docker 镜像 maven:3-alpine 中安装一个 docker-client,并且应该传递一个指向 REMOTE_DOCKER_HOST 的 env,以便它可以与守护进程对话并根据需要构建镜像。

标签: maven jenkins jib


【解决方案1】:

我确实通过在我的 maven docker 映像中添加 docker 代理解决了这个问题

pipeline {
     agent any

    stages {

         stage('build Dockerfile') {

            steps {
                sh '''echo "FROM maven:3-alpine
                          RUN apk add --update docker openrc
                          RUN rc-update add docker boot" >/var/lib/jenkins/workspace/Dockerfile'''

            }
         }

         stage('run Dockerfile') {
             agent{
                 dockerfile {
                            filename '/var/lib/jenkins/workspace/Dockerfile'
                            args '--user root -v $HOME/.m2:/root/.m2  -v /var/run/docker.sock:/var/run/docker.sock'
                        }
             }

             steps {
                 sh 'docker version'
                 sh 'mvn -version'
                 sh 'java -version'
             }

         }

    }
}

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2021-09-02
    • 1970-01-01
    • 2022-06-27
    • 2017-09-17
    • 2020-01-15
    • 2019-06-26
    • 2020-10-20
    • 2020-12-30
    相关资源
    最近更新 更多