解决Docker镜像无法拉取问题

Docker镜像无法拉取问题

解决目前Docker Hub国内无法访问方法汇总近期以来,自2024年5月中旬,著名Docker 容器平台: http://hub.docker.com 不知为何,均无法正常访问了。

这样对国内服务器拉取Docker镜像的影响比较大,不过国内有一些Docker Hub镜像平台,可以用一部分。

下面大概介绍一下。

配置镜像

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": [

"https://docker.m.daocloud.io",

"https://dockerproxy.com",

"https://docker.mirrors.ustc.edu.cn",

"https://docker.nju.edu.cn",

"http://hammal.staronearth.win/",

"http://hub.staronearth.win/"

]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

主要是这两个比较好使,建议可以增加一下:

http://hub.staronearth.win

http://hammal.staronearth.win

我配置之后,拉了一下 基本没什么问题。

内容参考如下:

汇总国内可用镜像

DaoCloud 镜像站

加速地址:https://docker.m.daocloud.io支持:Docker Hub、GCR、K8S、GHCR、Quay、NVCR 等对外免费:是

网易云

加速地址:https://hub-mirror.c.163.com支持:Docker Hub对外免费:是

Docker 镜像代理

加速地址:https://dockerproxy.com支持:Docker Hub、GCR、K8S、GHCR对外免费:是

百度云

加速地址:https://mirror.baidubce.com支持:Docker Hub对外免费:是

南京大学镜像站

加速地址:https://docker.nju.edu.cn支持:Docker Hub、GCR、GHCR、Quay、NVCR 等对外免费:是

上海交大镜像站

加速地址:https://docker.mirrors.sjtug.sjtu.edu.cn/支持:Docker Hub、GCR 等限制:无

阿里云

加速地址:https://.mirror.aliyuncs.com支持:Docker Hub限制:需要登录账号获取CODE

科大镜像站

加速地址:https://docker.mirrors.ustc.edu.cn支持:Docker Hub、GCR、Quay限制:仅供内部访问

Azure中国镜像

加速地址:https://dockerhub.azk8s.cn支持:Docker Hub、GCR、Quay限制:仅供内部访问失效关闭

七牛云

加速地址:https://reg-mirror.qiniu.com支持:Docker Hub、GCR、Quay限制:已关闭

Docker 中国官方镜像

加速地址:https://registry.docker-cn.com支持:Docker Hub限制:已关闭

其他方式

对于一些比较热门Docker仓库,国内加速镜像更新还算及时。毕竟大厂们免费提供镜像服务,有挺大的成本。不会全量缓存Docker Hub仓库,以及镜像更新不及时!

最快速及时的方式直接请求 http://hub.docker.com 获取docker仓库。

haochuang—-2024年6月12日19:21:42更新

另外,有开源技术同学已经自己搭建了镜像站,有兴趣的话,可以参考:https://mp.weixin.qq.com/s/maonWv7Yj7F-zm8g-n4i8A 自行搭建或者实践。

Github仓库地址:https://github.com/kubesre/docker-registry-mirrors

部署步骤:

# 1. 拉取代码

$ git clone https://github.com/wzshiming/crproxy.git

$ cd crproxy/examples/default

# 2. 修改网关域名

使用vim编辑start.sh文件,将第五行的gateway变量值修改为你自己设定的域名。

# 3. 启动服务

$ ./start.sh

# 4. 拉取镜像示例

如果域名为kubesre.xyz,可以通过添加前缀的方式拉取镜像

$ docker pull kubesre.xyz/k8s.gcr.io/coredns/coredns:v1.8.6

# 5. 设置别名

如果需要使用前缀替换方式拉取镜像,需要执行setup-alias.sh脚本,并为别名申请证书。

# 6. 重启服务

$ ./reload.sh

添加常用镜像仓库别名

设置环境变量:

GETEWAY=kubesre.xyz # 替换成自己的域名

添加别名:

./setup-alias.sh l5d.${GETEWAY} cr.l5d.io ${GETEWAY}

./setup-alias.sh elastic.${GETEWAY} docker.elastic.co ${GETEWAY}

./setup-alias.sh docker.${GETEWAY} docker.io ${GETEWAY}

./setup-alias.sh gcr.${GETEWAY} gcr.io ${GETEWAY}

./setup-alias.sh ghcr.${GETEWAY} ghcr.io ${GETEWAY}

./setup-alias.sh k8s-gcr.${GETEWAY} k8s.gcr.io ${GETEWAY}

./setup-alias.sh k8s.${GETEWAY} registry.k8s.io ${GETEWAY}

./setup-alias.sh mcr.${GETEWAY} mcr.microsoft.com ${GETEWAY}

./setup-alias.sh nvcr.${GETEWAY} nvcr.io ${GETEWAY}

./setup-alias.sh quay.${GETEWAY} quay.io ${GETEWAY}

./setup-alias.sh jujucharms.${GETEWAY} registry.jujucharms.com ${GETEWAY}

./setup-alias.sh rocks-canonical.${GETEWAY} rocks.canonical.com ${GETEWAY}

申请别名证书:

./update-tls.sh gcr.${GETEWAY}

./update-tls.sh ghcr.${GETEWAY}

./update-tls.sh k8s-gcr.${GETEWAY}

./update-tls.sh k8s.${GETEWAY}

./update-tls.sh mcr.${GETEWAY}

./update-tls.sh nvcr.${GETEWAY}

./update-tls.sh quay.${GETEWAY}

./update-tls.sh jujucharms.${GETEWAY}

./update-tls.sh rocks-canonical.${GETEWAY}

最后重启服务:

./reload.sh

.