You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Docker插件默认挂载工作空间的原因及禁用方法

Jenkins Docker容器默认挂载工作空间的原因及禁用方法

为什么会默认挂载工作空间?

Jenkins的Docker Pipeline插件(docker-workflow)会自动将当前Job的工作空间(比如你的/home/jenkins/workspace/kevin)挂载到容器内的相同路径,核心目的是:

  • 让容器内执行的Pipeline步骤能直接访问工作空间中的代码、构建脚本、中间产物等,无需手动配置文件传递,简化构建流程
  • 保持宿主机与容器间的文件状态同步,方便后续步骤复用构建结果

挂载参数中的:z是SELinux安全上下文标记,当宿主机开启SELinux时,它会调整挂载目录的安全策略,确保容器进程拥有读写该目录的权限,避免出现权限拒绝的报错。

如何禁用默认挂载?

有两种可靠的方式可以取消这个默认挂载:

方法一:覆盖默认挂载规则

在inside()方法的参数中,添加-v /dev/null:/home/jenkins/workspace/kevin,用空设备/dev/null替换默认的工作空间挂载,容器内就无法访问宿主机的工作空间了:

image.inside('-v /build:/build:rw -v /dev/null:/home/jenkins/workspace/kevin') {
    body()
}

如果需要通用适配不同Job的工作空间,可以用环境变量${env.WORKSPACE}代替固定路径:

image.inside("-v /build:/build:rw -v /dev/null:${env.WORKSPACE}") {
    body()
}

方法二:使用插件专属选项(适用于新版本)

如果你使用的是较新版本的docker-workflow插件,可以直接调用noWorkspace()方法禁用默认挂载,写法更简洁:

image.inside('-v /build:/build:rw').noWorkspace() {
    body()
}

内容的提问来源于stack exchange,提问作者Kevin Nammour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:45:58