docker - Jenkins 中的 Docker 管道异常:找不到 Docker
问题描述
我在这样的 docker 容器中使用 Jenkins:
FROM jenkins/jenkins:2.301
USER root
RUN rm /etc/apt/sources.list.d/github_git-lfs.list
RUN apt-get update && apt-get install curl -y
RUN curl -fsSL https://get.docker.com | sh
RUN groupmod -g 998 docker
RUN usermod -a -G docker jenkins
USER jenkins
我使用 docker compose 和这些卷运行:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/jenkins:/var/jenkins_home
当我的管道工作时,我可以看到创建了一个新容器,当我要去 jenkins 容器时,docker 命令有效,但我的管道说:
line 1: docker: not found
这是我的詹金斯文件的摘录:
pipeline {
agent {
docker {
image 'node:14.15.5-alpine3.13'
args '-p 3000:3000'
}
}
environment {
CI = 'true'
REGISTRY = 'my_repo/my_project'
REGISTRY_CREDENTIAL = 'MY_CREDENTIAL'
DOCKER_IMAGE = ''
}
stages {
stage('Test') {
steps {
sh 'npm i'
sh 'npm run lint'
sh 'npm run type-check'
sh 'npm run test'
}
}
stage('Build') {
steps {
sh 'npm run build'
script {
dockerImage = docker.build registry + ":$BUILD_NUMBER"
}
}
}
stage('Deliver') {
steps {
script {
docker.withRegistry( '', registryCredential ) {
dockerImage.push()
}
}
}
}
stage('Cleaning') {
steps {
sh "docker rmi $registry:$BUILD_NUMBER"
}
}
}
}
我知道有类似的主题,但要么我不明白,要么我没有完全相同的问题
任何人都可以帮助我吗?
解决方案
推荐阅读
- c# - 日期列表到日期范围列表?
- node.js - Node.js - 无法播放从 base64 转换的 .wav 音频文件
- php - 从 HTML 和 CSS 创建 Google Drive 文档模板
- sqlite - Sqlite日期时间,获取最新日期
- java - Java检查int的下一位是否等于当前一位
- python - 用一组两个可能的字符替换字符串中的一个字符
- java - 如何配置 Lagom 框架以使用 CORS?
- jenkins - 如何限制詹金斯用户在根级别创建文件夹而不是作业?
- node.js - Express 路由器中间件中的请求正文为空
- javers - 比较 2 个对象的问题