Windows11 WSL环境下Jenkins Docker插件报错修复求助
问题解决:Jenkins Pipeline结合Docker(替代已停止维护的Docker插件)
问题背景
在Windows 11的WSL环境中使用Docker,学习Jenkins CI/CD时,因依赖的Jenkins Docker插件已停止维护,运行原Pipeline脚本时出现路径识别错误,需修改为直接使用Docker命令完成流程。
原脚本运行错误
java.io.IOException: Failed to run image 'opstreedevops/maven:java8'. Error: docker: Error response from daemon: the working directory 'C:/Users/name/AppData/Local/Jenkins/.jenkins/workspace/CI/Spring3HibernateDocker@2/' is invalid, it needs to be an absolute path.
修改后的Pipeline脚本
pipeline { agent any environment { // 转换Jenkins工作区的Windows路径为WSL兼容的Linux路径 WORKSPACE_WSL = bat(script: 'wslpath -u "%WORKSPACE%"', returnStdout: true).trim() // 转换本地Maven仓库路径为WSL格式(可根据实际路径调整) LOCAL_M2_WSL = bat(script: 'wslpath -u "%USERPROFILE%/.m2"', returnStdout: true).trim() } stages { stage("Code Checkout") { steps { git branch: 'main', url: 'C:\\Users\\path\\own\\CI-CD-Pipeline-with-Docker-and-Jenkins-main' } } stage("Code Stability | Build Image") { steps { script { // 直接调用docker build命令,指定WSL格式的工作区作为构建上下文 bat "docker build -t name_of_docker_image/spring3hibernate:${env.BUILD_ID} ${WORKSPACE_WSL}" } } } stage("Code Quality | Checkstyle | Hadolint") { parallel { stage("Checkstyle") { steps { // 用docker run替代Docker插件的agent配置,手动挂载目录并指定工作路径 bat """ docker run --rm \ -v ${WORKSPACE_WSL}:/workspace \ -v ${LOCAL_M2_WSL}:/root/.m2 \ -w /workspace \ opstreedevops/maven:java8 \ mvn checkstyle:checkstyle """ recordIssues sourceCodeRetention: 'LAST_BUILD', tools: [checkStyle(pattern: '**/checkstyle-result.xml')] } } stage("Hadolint") { steps { // 使用官方Hadolint容器执行检查,避免依赖本地环境 bat """ docker run --rm \ -v ${WORKSPACE_WSL}:/workspace \ -w /workspace \ hadolint/hadolint:latest \ hadolint Dockerfile --no-fail -f json > hadolint.json type hadolint.json """ recordIssues sourceCodeRetention: 'LAST_BUILD', tools: [hadoLint(pattern: 'hadolint.json')] } } } } } }
关键修改说明
- 路径转换:通过
wslpath命令将Windows风格路径转为WSL兼容的Linux路径,解决Docker daemon无法识别Windows路径的核心问题 - 替换插件调用:
- 移除
docker.build,改用原生docker build命令指定构建上下文 - 删除原Docker Agent配置,用
docker run手动挂载工作区和Maven仓库,明确容器内工作目录
- 移除
- 优化流程:删除Checkstyle阶段重复的代码拉取操作,复用初始阶段已拉取的代码
- 环境一致性:Hadolint改用官方镜像运行,无需在Jenkins Agent上手动安装工具
内容的提问来源于stack exchange,提问作者usertest
相关产品推荐
相关产品推荐

