不借助 mirror 仓库,为docker engine daemon添加 proxy 访问 docker hub,解决国内公开的docker mirror 仓库不再可用了的问题

💡 原文中文,约1600字,阅读约需4分钟。
📝

内容提要

本文介绍了如何使用代理连接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'。

🏷️

标签

➡️

继续阅读