一个Docker仓库问题的思考

发布时间 2023-10-23 18:28:36作者: 七彩代码

近期项目有云上部署要求,产品要打包成docker镜像。之前产品已经发布过docker版本本次只需要需要更新下,于是交代组内另外一个同学更新下镜像,想着应该很简单;

中间经过熟悉docker知识点搭建环境等,过了大概2天,跟我反馈:环境搭建好了,但是无法制作镜像,连docker run helloworld也报错,错误信息就下面这个:

[root@mymaster xx]# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for localhost, not registry-1.docker.io.
See 'docker run --help'.

baidu或者google结果差不多,都是说daemon.json配置的仓库地址有问题,然后仓库地址也都改成国内的了,结果还是一样;
仔细思考下,从错误信息看搜索结果应该是不太对的,报错的意思是站点证书不受信任,证书数主题和实际访问的地址对不上~
再进一步思考下不过是国内仓库还是国外仓库,都不太可能会使用自签名的山寨站点证书,所以这个错很值得商榷,要么请求被拦截了要么是DNS被污染了~但是有个现象,本人之前搭建的环境却没有问题,要确定也比较简单,对比下就有了:
从问题环境ping registry-1.docker.io,再从正常环境ping registry-1.docker.io返回地址居然不一样,那具体哪里出了问题呢?
在问题环境运行docker run命令时抓两个包,居然是个内网地址,大概长这个样子
image
到这里问题大概清晰了,请求没出去内网,咨询网络管理员终于明了,研发环境要出内网需要开放审批,否则会被内网出口的管控系统拦截,抓包看到的山寨站点证书就是管控系统的。

网络审批流程比较复杂,只要手动把镜像下载下来,后面的工作都可以正常进行了;