首页 > 解决方案 > Jenkins 从本地注册表中提取图像:等待标头时超出 Client.Timeout

问题描述

我在我的机器上本地运行一个 docker 注册表,我可以成功地从中提取我的图像:

docker pull 192.168.174.205:5001/myimg:latest

我还在我的机器上运行 jenkins 容器,但 Jenkins 无法从本地注册表中提取任何图像。我使用 Blue Ocean 容器(在同一台机器上)启动管道,它输出:

+ docker pull 192.168.174.205:5001/insureio:latest
Error response from daemon: Get https://192.168.174.205:5001/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
script returned exit code 1

TMI

眼镜

参考

我一直在按照说明工作

设置

我的/etc/docker/daemon.json文件显示{"insecure-registries" : ["192.168.174.205:5001"]}.

本地注册表给出 200 响应:

curl http://192.168.174.205:5001/v2/_catalog
{"repositories":["mying"]}

我的管道脚本是:

node {
  stage('Build') {
    docker.withRegistry('http://192.168.174.205:5001') {
      docker.image('insureio:latest').inside('') {
        sh 'make test'
      }
    }
  }
}

标签: dockerjenkinsdocker-registry

解决方案


由于 Jenkins 和您的注册表都是容器,因此 Jenkins 将在其自己的网络空间中查看 192.168.174.205 IP 地址。

如果您只是尝试一下,我建议docker inspect <your registry container> | grep -i ipaddress您查找它的 IP 地址(默认情况下它应该在 172.17.XXX.XXX 区域内)并配置您的管道以使用该地址。


推荐阅读