Jenkins运行Pipeline报 docker: not found
本文场景为docker安装在宿主机。并用docker启用了Jenkins应用导致容器内不能运行docker进行image生成。参考了:docker-compose 配置jenkins docker volume权限问题经过以上两配置基本可以解决容器内docker与宿主机映射的问题,但是当我用Pipeline打好javajar包准备build镜像文件时又出现了docker: not found问题。
·
本文场景为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映射到容器内,也不会出现此问题。
更多推荐
已为社区贡献1条内容
所有评论(0)