Windows10下Jenkins Pipeline调用Docker报错:lookup docker on 127.0.0.11:53: no such host
解决Windows10下Jenkins流水线无法解析Docker主机名的问题
执行流水线构建时返回错误:
error during connect: Get "https://docker:2376/v1.24/containers/maven:3.9.0-eclipse-temurin-11/json": dial tcp: lookup docker on 127.0.0.11:53: no such host更换其他Maven镜像版本后报错相同,核心问题是Jenkins无法解析
docker主机名,无法连接到Docker daemon。
核心原因
这个错误和镜像版本无关,本质是默认的docker:2376是Docker容器间通信的主机名,但在Windows环境下(无论Jenkins装在主机还是Docker容器里),这个主机名无法被正确解析,导致Jenkins找不到Docker daemon的地址。
针对性解决方案
情况1:Jenkins直接安装在Windows主机上
- 开启Docker daemon的TCP访问
- 打开Docker Desktop,进入设置 > Docker Engine,添加或修改配置:
{ "hosts": ["tcp://localhost:2375", "npipe:////./pipe/docker_engine"] } - 重启Docker Desktop生效。
- 打开Docker Desktop,进入设置 > Docker Engine,添加或修改配置:
- 配置Jenkins的Docker连接
- 进入Jenkins全局工具配置,找到Docker工具,设置Docker主机URL为
tcp://localhost:2375。
- 进入Jenkins全局工具配置,找到Docker工具,设置Docker主机URL为
- 调整Jenkinsfile的agent配置
- 显式指定Docker主机地址,示例:
pipeline { agent { docker { image 'maven:3.9.6-eclipse-temurin-11' // 使用Docker Hub上存在的镜像 envVars { DOCKER_HOST = 'tcp://localhost:2375' } } } stages { stage('Build') { steps { sh 'mvn -B clean package' } } } }
- 显式指定Docker主机地址,示例:
情况2:Jenkins运行在Docker容器中(Windows用WSL2后端)
- 用Windows主机别名替换
docker主机名- Windows Docker Desktop提供
host.docker.internal别名用于容器访问主机服务,修改Jenkinsfile的Docker连接配置:pipeline { agent { docker { image 'maven:3.9.6-eclipse-temurin-11' envVars { DOCKER_HOST = 'tcp://host.docker.internal:2375' } } } stages { stage('Build') { steps { sh 'mvn -B clean package' } } } }
- Windows Docker Desktop提供
- (可选)挂载Docker管道实现无TCP连接
- 启动Jenkins容器时添加挂载参数:
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v //./pipe/docker_engine://./pipe/docker_engine jenkins/jenkins:lts - 然后在Jenkinsfile中使用管道连接:
envVars { DOCKER_HOST = 'npipe:////./pipe/docker_engine' }
- 启动Jenkins容器时添加挂载参数:
验证连接有效性
- 进入Jenkins系统管理 > 系统配置,找到Docker服务器配置,点击测试连接确认连接成功。
- 或者在Jenkins的执行shell步骤中添加
docker info命令,验证是否能正常获取Docker daemon信息。
关于镜像版本的补充
maven:3.9.0-eclipse-temurin-11确实不存在于Docker Hub官方镜像仓库,建议选择存在的版本,比如maven:3.9.6-eclipse-temurin-11或maven:3.8.8-eclipse-temurin-11-alpine,但这不是本次报错的核心原因。
内容的提问来源于stack exchange,提问作者Original-Thunderbird
相关产品推荐
相关产品推荐

