Windows环境下Jenkins内Docker连接失败及@temp文件疑问
Jenkins Docker连接失败与@temp文件问题排查
一、Docker与Jenkins连接失败(Windows环境)
你用Docker运行Jenkins,直接指定本地docker.exe路径无法建立连接,得用容器共享Docker服务的方式解决:
- 挂载Docker Socket到Jenkins容器
重启Jenkins容器时添加挂载参数,根据Docker后端类型选择对应命令:- 基于WSL2后端的Docker:
docker run -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts - Windows原生Docker:
docker run -d -p 8080:8080 -p 50000:50000 -v //./pipe/docker_engine://./pipe/docker_engine -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
- 基于WSL2后端的Docker:
- 给Jenkins容器用户添加Docker权限
进入Jenkins容器执行命令,让jenkins用户拥有访问Docker服务的权限:
执行完成后重启Jenkins容器。docker exec -it <你的Jenkins容器ID> usermod -aG docker jenkins - 临时测试用TCP连接(不建议生产环境)
打开Docker Desktop设置,开启「Expose daemon on tcp://localhost:2375 without TLS」,然后在Jenkins全局工具配置中,将Docker URL设置为tcp://host.docker.internal:2375。
二、项目目录中@temp文件的由来
- 这类文件是Jenkins流水线执行时的临时工作文件:
- 当流水线拉取代码、执行构建步骤时,会在工作空间自动生成
@temp/@tmp目录,用于存储临时缓存数据、脚本执行的中间输出、构建上下文文件等。 - 如果你的流水线使用了容器代理(比如
agent { docker { ... } }),Jenkins会在代理容器内创建这些临时目录,用来挂载本地资源或传递构建所需的临时数据。
- 当流水线拉取代码、执行构建步骤时,会在工作空间自动生成
- 处理建议:
- 无需手动删除,Jenkins在流水线结束后通常会自动清理;如果需要强制清理,可以在流水线脚本末尾添加post步骤:
post { always { deleteDir() // 清理整个工作空间的临时文件 } } - 这些文件不会影响构建结果,仅占临时磁盘空间,除非磁盘不足,否则无需额外处理。
- 无需手动删除,Jenkins在流水线结束后通常会自动清理;如果需要强制清理,可以在流水线脚本末尾添加post步骤:
内容的提问来源于stack exchange,提问作者Ayshe Ayparcasi
相关产品推荐
相关产品推荐

