背景:近期我在搭建 Docker 镜像站时,采用了Docker-Proxy工具,部署过程中使用了 HTTP 代理。当时系统已正确配置代理地址,Docker 也能正常访问 Docker Hub 拉取镜像;同时,我通过 docker 部署了 hubcmd-ui 服务,并为容器指定了 HTTP 相关代理配置。但在实际使用中,检索 Docker Hub 镜像时始终出现错误。排查后台日志发现,Axios 发起的每次请求均返回 400 错误。起初我误判为证书问题,经多次排查后,最终确定根源在于代理配置 ——Axios 默认不会自动读取容器设置的代理地址,这是由于其本身不具备读取操作系统代理设置的能力。在 Node.js 环境中,若需通过代理访问网络,必须对代理进行显式配置。因此,我对 hubcmd-ui 源码中请求 Docker Hub 的相关接口进行了针对性修改,以解决该问题。
其实主要核心代码就是下面重点标出的地方: