Windows下Jenkins+Docker运行Maven容器报错,求解决方案
解决Jenkins在Windows上使用Linux Docker容器时工作目录无效的问题
这个报错的核心原因其实很好理解:你的Jenkins跑在Windows 10上,默认工作目录是Windows风格的绝对路径(比如C:\Users\c.c\.jenkins\workspace\...),但你用的是Linux Docker容器——Linux容器内部只认类Unix风格的绝对路径(以/开头),Docker daemon自然会拒绝这种跨系统的路径格式。
下面给你几个可行的解决办法,按优先级推荐:
1. 直接在Jenkinsfile里指定容器工作目录
最简单的方式是在Docker agent配置中添加args参数,手动映射Windows工作目录到容器内的Linux路径,并指定容器的工作目录:
pipeline { agent { docker { image 'maven:3.3.3' // 把Jenkins的Windows工作目录挂载到容器内的/usr/src/mymaven,同时设为工作目录 args '-v ${WORKSPACE}:/usr/src/mymaven -w /usr/src/mymaven' } } stages { stage('build') { steps { sh 'mvn --version' } } } }
这样容器内的命令会在/usr/src/mymaven下执行,完全符合Linux路径要求,同时能访问到Jenkins工作目录里的代码。
2. 把Jenkins工作目录迁移到WSL文件系统
如果你已经装了WSL(Windows子系统Linux),可以彻底解决路径兼容问题:
- 先停止Jenkins服务(打开Windows服务列表,找到Jenkins右键停止)
- 把原工作目录
C:\Users\c.c\.jenkins\workspace下的所有内容复制到WSL的路径里,比如/home/你的用户名/jenkins-workspace - 找到Jenkins的配置文件
C:\Program Files\Jenkins\jenkins.xml,修改<arguments>里的-Djenkins.workspace参数(如果没有就添加),路径写成Windows能识别的WSL格式,比如\\wsl$\Ubuntu\home\你的用户名\jenkins-workspace - 重启Jenkins服务
之后Jenkins的工作目录就变成了Linux原生路径,Docker Linux容器就能直接识别,不用再做额外映射。
3. 检查Docker Desktop的文件共享设置
有时候是Docker没权限访问Windows的工作目录:
- 打开Docker Desktop的设置,进入Resources > File Sharing
- 勾选Jenkins工作目录所在的磁盘(比如C盘),点击「Apply & Restart」
- 重启Docker后再跑流水线,应该就能正常映射路径了
如果你的Docker Desktop版本比较新,建议开启WSL集成模式,这样跨系统路径的兼容性会更好。
内容的提问来源于stack exchange,提问作者user3455402
相关产品推荐
相关产品推荐

