Docker 国内镜像代理失效

国内服务器部署docker,部署以后,如果公司没有提供镜像中心,开发首先要做的就是配置一个国内的镜像加速地址。巧了今天有台服务器,配置了镜像加速地址,但是发现拉取镜像的时候,一直拉取不到。

报错信息:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

20250106 时隔两天,所有的服务器都恢复了,这事居然不上热搜,国内所有的镜像代理都挂了

故障排查与修复尝试

起初,尝试切换至其他镜像加速地址,期望借此解决问题,然而事与愿违,问题依旧。

紧接着,着手修改本地 DNS 配置,试图从网络解析层面找到突破口,遗憾的是,经过一番调试,故障依然存在。

此时,本地网络的稳定性已备受质疑,于是果断切换至手机热点,试图绕过可能存在的本地网络故障点,可结果还是令人沮丧,问题毫无改善迹象。

问题蔓延

手头尚有几台部署于国内的服务器,且均安装了 Docker 环境。尝试在这些服务器上拉取镜像,本以为能另辟蹊径,结果发现无一例外,均无法成功拉取,所反馈的报错信息如出一辙,这表明问题并非局限于某一台设备。

进一步探究发现,镜像代理似乎瞬间失灵,在这紧急关头,迅速切换至境外机器进行尝试,令人稍感欣慰的是,镜像拉取在此处恢复正常,这意味着问题大概率出在国内的网络链路或相关配置上。

策略调整:迂回解决

鉴于国内直接拉取镜像的途径已被重重阻碍,而国外镜像却能正常访问,为尽快推进项目,决定采取迂回战术。首先切换至国外服务器,顺利拉取所需镜像,随后将其推送至国内镜像仓库,以此搭建起一座“数据桥梁”。

与此同时,同步对 Dockerfile 文件进行修改,将镜像地址替换为适配国内环境的地址,再重新构建镜像,最终成功部署。

金融IT程序员的瞎折腾、日常生活的碎碎念
使用 Hugo 构建
主题 StackJimmy 设计