docker - 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
眼镜
- Docker 版本 1.13.1,构建 4ef4b30/1.13.1
- 詹金斯版 2.204.2
- 主机 CentOS Linux 7(核心)
参考
我一直在按照说明工作
- https://docs.docker.com/registry/deploying/
- https://jenkins.io/doc/book/pipeline/docker/#custom-registry
设置
我的/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'
}
}
}
}
解决方案
由于 Jenkins 和您的注册表都是容器,因此 Jenkins 将在其自己的网络空间中查看 192.168.174.205 IP 地址。
如果您只是尝试一下,我建议docker inspect <your registry container> | grep -i ipaddress
您查找它的 IP 地址(默认情况下它应该在 172.17.XXX.XXX 区域内)并配置您的管道以使用该地址。
推荐阅读
- javascript - 使用另一个数组对对象数组进行排序
- java - Java如何打印已排序二维数组的原始索引?
- javascript - iframe 上的 postMessage 调用序列
- python - ValueError:未转换的数据仍然存在:02
- wpf - 为所有用户登录显示应用程序的托盘图标
- git - GitLab 每次提交一个管道(而不是推送)
- javascript - gRPC - Node Js - 如何将请求从客户端发送到具有不同端口的服务器?
- apache-spark - 为多次引用该数据帧的单个 Action Spark 应用程序缓存数据帧是否有效?
- javascript - 从对象数组到对象
- python - 如何渲染散景 ChordPlot 类?