我们都知道最近的新闻了
ustc 也早早的就出了一份公告。原始链接 https://mirrors.ustc.edu.cn/help/dockerhub.html
本文不讨论利用 cloudflare workers 加速 docker 镜像站,这种个人用用还是非常不错的,算是感谢 cf 大善人,个人用用非常滴不错,如果你没有一个稳定的 local proxy 的话。
本文将要讨论的是利用 http/https proxy 连接 docker hub,既然我们都用代理访问 google/youtube 了,那么再通过代理访问 docker hub 也是顺理成章的事,只不过这次的事件加速了这样一个【历史进程】。
但是需要知道的是,使用代理连接 docker hub,不是在 linux 终端 export HTTP_PROXY='' 这样就行了的,而是需要给 docker engine 的 daemon 程序显式设置 http 代理。官方文档可参考
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
可以看到,docker client version 23.0 或更新版本都可以直接编辑 /etc/docker/daemon.json
添加 proxies 对象即可。
{
"proxies": {
"http-proxy": "http://proxy.example.com:3128",
"https-proxy": "https://proxy.example.com:3129",
"no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
我在本地创建的如下,如果当前文件有其他内容,需要注意 json 格式合法性
{
"proxies": {
"http-proxy": "http://10.10.10.242:7890",
"https-proxy": "http://10.10.10.242:7890",
"no-proxy": "127.0.0.0/8"
}
}
保存后重启 docker daemon 即可正常拉取 docker hub 的镜像了。systemctl restart docker
在使用 systemd 的 linux 系统上还可以使用如下方式创建给 docker daemon 使用的代理
# 创建 docker service 的一个文件夹,该文件夹也有可能需要在 /etc/systemd/system/multi-user.target.wants/docker.service.d 创建,可以检查一下 docker.service 文件的路径
mkdir -p /etc/systemd/system/docker.service.d
# 写入 http_proxy 配置
cat > /etc/systemd/system/docker.service.d/http-proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://10.10.10.242:7890"
Environment="HTTPS_PROXY=http://10.10.10.242:7890"
EOF
systemctl daemon-reload
systemctl restart docker
重启之后就能愉快拉取 docker hub 上的镜像。