Jenkins运行Pipeline报 docker: not found

    技术2024-08-13  64

    本文场景为docker安装在宿主机。并用docker启用了Jenkins应用导致容器内不能运行docker进行image生成。 参考了:docker-compose 配置 jenkins docker volume权限问题 经过以上两配置基本可以解决容器内docker与宿主机映射的问题,但是当我用Pipeline打好java jar包准备build镜像文件时又出现了docker: not found问题。 原出现问题配置:

    pipeline { agent { docker { image 'maven:3-alpine' args '-v /root/.m2:/root/.m2' } } stages { stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('docker-build') { steps { sh '''cd /var/jenkins_home/workspace/simple-java-maven-app1/target cp ../Dockerfile ./''' sh'docker --help' } } } }

    在“sh’docker --help“这行报错,问题主要原因是agent 这个全局的额外工具配置上。 由于agent限制No agent type specified. Must be one of [any, docker, dockerfile, label, none] 必在这中间选一个此例中用了全局的maven:3-alpine 所以就没有其它工具 (docker)可用了!!! 后经更正配置为:

    pipeline { agent none stages { stage('Build') { agent { docker { image 'maven:3-alpine' args '-v /root/.m2:/root/.m2' } } steps { sh 'mvn -B -DskipTests clean package' } } stage('docker-build') { agent any steps { sh '''cd /var/jenkins_home/workspace/simple-java-maven-app1/target cp ../Dockerfile ./ docker build -t testproject .''' } } } }

    这样在每一步分引用不同的工具,这样就可以正常使用docker了。当然如果在宿主机安装maven映射到容器内,也不会出现此问题。

    Processed: 0.027, SQL: 9