不借助 mirror 仓库,为docker engine daemon添加 proxy 访问 docker hub,解决国内公开的docker mirror 仓库不再可用了的问题
内容提要
本文介绍了如何使用代理连接Docker Hub,需要在Docker引擎的守护程序中设置HTTP代理。可以通过编辑/ etc / docker / daemon.json文件或创建代理配置文件来实现。重启Docker守护程序后,就可以正常拉取Docker Hub上的镜像了。
延伸解读
为何需要为 Docker 守护进程单独配置代理
文章指出,在终端中设置 HTTP_PROXY 环境变量对 Docker 拉取镜像无效,因为实际发起网络请求的是 Docker 守护进程(daemon),而非客户端命令。因此必须为守护进程显式配置代理,才能让镜像拉取流量经过代理。这解释了为何许多用户按常规方法设置代理后仍无法拉取 Docker Hub 镜像。
两种配置方式的选择与注意事项
文章提供了两种配置途径:一是编辑 /etc/docker/daemon.json 添加 proxies 对象,适用于 Docker 客户端版本 23.0 及以上;二是为 systemd 创建 docker.service.d 目录下的代理配置文件。前者更简洁,但需注意 JSON 格式合法性,若文件已有内容需避免破坏结构;后者则适用于使用 systemd 的 Linux 系统,通过环境变量注入代理设置。
配置后的生效步骤与验证
无论采用哪种方式,保存配置后都必须重启 Docker 守护进程(如 systemctl restart docker)才能使代理生效。对于 systemd 方式,还需先执行 systemctl daemon-reload 重新加载服务配置。重启后即可正常拉取 Docker Hub 上的镜像,这验证了配置的正确性。
Q&A
如何在Docker中设置HTTP代理以访问Docker Hub?
需要在Docker引擎的守护程序中设置HTTP代理,可以通过编辑/etc/docker/daemon.json文件或创建代理配置文件来实现。
编辑daemon.json文件时需要注意什么?
需要确保JSON格式合法性,如果当前文件有其他内容,必须保持格式正确。
在使用systemd的Linux系统上如何配置Docker的代理?
可以创建docker服务的代理配置文件,写入HTTP_PROXY和HTTPS_PROXY的环境变量,然后重启Docker服务。
重启Docker守护程序后会发生什么?
重启后可以正常拉取Docker Hub上的镜像。
Docker客户端的哪个版本可以直接编辑daemon.json添加proxies对象?
Docker客户端版本23.0或更新版本可以直接编辑daemon.json添加proxies对象。
如何在代理配置中设置不使用代理的地址?
可以在配置中使用no-proxy字段指定不使用代理的地址,例如'no-proxy': '*.test.example.com,.example.org,127.0.0.0/8'。