前言
去年Docker Hub被封锁,不能直接web浏览;而在今年2024年6月初,不能直接从docker hub拉取镜像了。
之前一直使用的 https://dockerproxy.com/ 也已被墙,所有泛域名已被 GFW 封禁及 DNS 污染,已经无法在中国大陆正常使用。
执行docker pull命令拉取docker镜像时无反应,一直在循环尝试。
1[root@starrocks1 ~]# docker pull mysql:8.1
28.1: Pulling from library/mysql
38e0176adc18c: Pulling fs layer
414e977b0f4b2: Pulling fs layer
5a7b58dd6f78b: Pulling fs layer
6fba70cc872a5: Waiting
75db2cc6eab8f: Waiting
8081f41f573ba: Waiting
986bf2dc4ded9: Waiting
1047f08b0e916e: Waiting
11850e29ae8eeb: Waiting
1213517fe0d921: Waiting复制
下面麦老师整理了几种办法,大家可以参考一下,后期该文持续更新,大家若有新的办法还请不吝赐教。
方法1:修改配置文件
多种方法自行尝试,总有一款适合你,亲测可行!
1-- 可行
2docker pull dockerhub.timeweb.cloud/postgres:16.2
3docker pull docker.m.daocloud.io/postgres:16.2
4
5
6
7docker pull docker.shootchat.top/postgres:16.2
8docker pull do.nark.eu.org/postgres:16.2
9
10
11
12-- 或直接配置如下加速
13cat > /etc/docker/daemon.json <<"EOF"
14{
15 "registry-mirrors": [
16 "https://vm1wbfhf.mirror.aliyuncs.com",
17 "http://f1361db2.m.daocloud.io",
18 "https://hub-mirror.c.163.com",
19 "https://docker.mirrors.ustc.edu.cn",
20 "https://mirror.baidubce.com",
21 "https://ustc-edu-cn.mirror.aliyuncs.com",
22 "https://registry.cn-hangzhou.aliyuncs.com",
23 "https://ccr.ccs.tencentyun.com",
24 "https://hub.daocloud.io",
25 "https://docker.shootchat.top",
26 "https://do.nark.eu.org",
27 "https://dockerproxy.com",
28 "https://docker.m.daocloud.io",
29 "https://dockerhub.timeweb.cloud",
30 "https://docker.shootchat.top",
31 "https://do.nark.eu.org"
32 ]
33}
34EOF
35
36systemctl daemon-reload
37systemctl restart docker复制
方法2:配置代理
若有科学上网的手段,则也可以设置 Docker 代理拉取镜像。
1sudo mkdir -p /etc/systemd/system/docker.service.d
2
3cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<"EOF"
4[Service]
5Environment="HTTP_PROXY=http://192.16.7.162:9910/"
6Environment="HTTPS_PROXY=http://192.16.7.162:9910/"
7Environment="ALL_PROXY=http://192.16.7.162:9910"
8Environment="NO_PROXY=localhost,127.0.0.1"
9EOF
10
11
12sudo systemctl daemon-reload
13sudo systemctl restart docker
14
15
16
17[root@test /]# sudo docker info | grep Proxy
18 HTTP Proxy: http://192.16.7.162:9910/
19 HTTPS Proxy: http://192.16.7.162:9910/
20 No Proxy: localhost,127.0.0.1复制
方法3:单镜像加速
Github仓库地址:https://github.com/kubesre/docker-registry-mirrors
您可以根据 镜像同步 Issue 模板 创建一个 Issue, 将会有机器人帮您优先主动同步指定的镜像 同步结果会在 Issue 中更新
接下来通过案例进行演示一下:
1[root@alldb ~]# docker pull openeuler/openeuler:24.03-lts
224.03-lts: Pulling from openeuler/openeuler
3475ac88beb69: Retrying in 1 second
46c642c978813: Retrying in 1 second
5error pulling image configuration: download failed after attempts=6: dial tcp 118.113.171.186:443: i/o timeout
6You have mail in /var/spool/mail/root复制
那我们提个Issue同步一下:浏览器输入:https://github.com/kubesre/docker-registry-mirrors/issues/new?assignees=&labels=sync+image&projects=&template=sync-image.yml

机器人自动同步,不到1分钟就有回复:

1# Docker 拉取命令
2docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts
3docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts docker.io/openeuler/openeuler:24.03-lts
4
5# Containerd 拉取命令
6ctr images pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts
7ctr images tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts docker.io/openeuler/openeuler:24.03-lts
8
9# Shell 快速替换命令
10sed -i s#docker.io/openeuler/openeuler:24.03-lts#swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts#g 你的文件名复制
执行结果:
1[root@alldb ~]# docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts
224.03-lts: Pulling from kubesre/docker.io/openeuler/openeuler
3475ac88beb69: Pull complete
46c642c978813: Pull complete
5Digest: sha256:653d617cf99d23c3a9ed7431f80b379349399ea15cf89b43c9fe6cac4cf0ac1b
6Status: Downloaded newer image for swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts
7swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts
8[root@alldb ~]# docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/openeuler/openeuler:24.03-lts docker.io/openeuler/openeuler:24.03-lts
9[root@alldb ~]#复制
还是很溜的。。。
总结
1、多种办法可以都尝试一下。
参考
https://github.com/DaoCloud/public-image-mirror 、 https://docker.m.daocloud.io
https://www.aabcc.top/archives/m7NPfx1D
https://dockerproxy.com
https://m.daocloud.io/docker.io/
https://mp.weixin.qq.com/s/25Hx_z06I2G9BRtT5UzcSg
https://zhuanlan.zhihu.com/p/704011584
https://mirrors.kb.cx/status