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

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主机上

  1. 开启Docker daemon的TCP访问
    • 打开Docker Desktop,进入设置 > Docker Engine,添加或修改配置:
      {
        "hosts": ["tcp://localhost:2375", "npipe:////./pipe/docker_engine"]
      }
      
    • 重启Docker Desktop生效。
  2. 配置Jenkins的Docker连接
    • 进入Jenkins全局工具配置,找到Docker工具,设置Docker主机URL为tcp://localhost:2375。
  3. 调整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'
            }
          }
        }
      }
      

情况2:Jenkins运行在Docker容器中(Windows用WSL2后端)

  1. 用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'
            }
          }
        }
      }
      
  2. (可选)挂载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系统管理 > 系统配置,找到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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:43:17