news 2026/9/12 20:37:48

3分钟解决Docker镜像拉取超时:DaoCloud镜像加速完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3分钟解决Docker镜像拉取超时:DaoCloud镜像加速完整指南

3分钟解决Docker镜像拉取超时:DaoCloud镜像加速完整指南

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

public-image-mirror(DaoCloud 公开镜像仓库)解决的是一个很具体的问题:gcr.io、ghcr.io、quay.io 这类部署在海外的镜像仓库,国内直接拉取经常超时或极慢。它的思路很朴素——在镜像地址前加一个前缀,让镜像从国内节点同步缓存后给你下载,你不需要任何账号和付费配置。

为什么国外镜像会拉取超时

先说清它的同步机制,后面几个"坑"都跟这个有关:

  • 懒加载:不是把所有镜像提前搬回国内,而是你第一次拉取时才从源仓库同步一份到国内节点;
  • 哈希一致:缓存镜像的 sha256 与源仓库保持一致,不会被篡改或"换内容";
  • 缓存 30 天过期:长期不拉取的镜像过期后需要重新同步,所以第一次拉取会明显比第二次慢。

理解了"首次慢、二次快",你就知道很多超时其实只是冷同步,而不是服务挂了。

选加速方式:加前缀 vs 前缀替换

两种方式都能用,区别在于覆盖范围和适用场景:

加前缀m.daocloud.io/前缀替换(如docker.m.daocloud.io
覆盖范围白名单内的所有仓库仅人工配置了映射的源站
写法m.daocloud.io/docker.io/library/nginxdocker.m.daocloud.io/library/nginx
能否配进 Docker 全局 mirror可以(仅限 docker.io)
推荐程度✅ 官方推荐有对应映射时可用

常用源站的前缀替换映射(节选自项目 README):

源站替换为
docker.iodocker.m.daocloud.io
ghcr.ioghcr.m.daocloud.io
gcr.iogcr.m.daocloud.io
registry.k8s.iok8s.m.daocloud.io
quay.ioquay.m.daocloud.io
mcr.microsoft.commcr.m.daocloud.io

⚠️ 注意:不要把 docker.io 之外的站点配进 Docker 的registry-mirrors,每个源站内容不同,混配会导致找不到镜像。

3分钟拉取第一张加速镜像

加前缀的用法:把原来的镜像地址原样保留,前面拼上m.daocloud.io/。下面两条命令等价,第二条走国内节点:

# 原地址(国内直连,可能超时) docker pull docker.io/library/nginx:latest # 加速地址(加 m.daocloud.io/ 前缀,其余不变) docker pull m.daocloud.io/docker.io/library/nginx:latest

拉下来之后直接docker run -d -P启动即可,镜像本身和官方完全一致。如果是 K8s 的 YAML,把image:字段按同样方式改前缀就行,其他什么都不用动。

给 Docker 客户端配置全局加速

如果你希望所有docker.io镜像自动走加速节点,而不用改每一条 pull 命令,改一下 daemon 配置即可。编辑/etc/docker/daemon.json,加入registry-mirrors(只放 docker.io 的加速地址),然后重启 Docker 服务生效:

{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }
sudo systemctl restart docker # 重启使配置生效

这个全局配置只对 docker.io 生效。ghcr.io、gcr.io 等其他源站请继续用加前缀的方式,或参考 Podman 的 registries.conf 写法(Podman 支持为每个源站单独配 mirror,比 Docker 灵活)。

K8s 集群的镜像仓库加速

集群场景常见的三个位置,改法如下:

  1. kubeadm 初始化:把集群组件的镜像仓库指到加速节点。在 kubeadm 配置里改两个字段:
apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration dns: imageRepository: k8s.m.daocloud.io/coredns # CoreDNS 组件镜像 imageRepository: k8s.m.daocloud.io # 其余集群组件镜像
  1. kind 本地集群:创建时直接指定 node 镜像的加速地址:
kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1
  1. 存量集群所有 Pod:不想逐个改 YAML 的话,可以部署 repimage 这类 Webhook 组件,自动改写新建 Pod 的 image 地址,业务侧零改动。

另外,企业内网如果对"完全不走外网"有要求,官方提供了本地缓存方案:在内网起一个 Registry 作为m.daocloud.io的二级缓存,细节见 docs/local-cache/README.md。

两个机制:白名单与缓存时效

拉取失败前,先确认这两点:

1. 镜像是否在白名单内

同步范围由仓库根目录的 allows.txt 控制,目前收录 1300 余条仓库规则,docker.io约 1000 条、ghcr.io约 200 条,gcr.ioregistry.k8s.io等则是整站放行。想确认某个镜像是否支持,clone 下来查一下最快:

# 把仓库拉到本地,然后 grep 白名单(支持 * 通配规则) git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror grep "docker.io/nginx" public-image-mirror/allows.txt

不在名单里的镜像会被拒绝同步,需要等维护者添加(项目设计上加仓库不需要改代码)。

2. 缓存时效与 tag 选择

现象原因
首次拉取特别慢冷同步,属正常;建议把批量拉取放在北京时间凌晨 01-07 点的闲时
换了新 tag 后内容没更新Manifest 内存缓存 1 小时,tag 更新后最长延迟 1 小时
突然 404缓存临 30 天过期被清理时,1 分钟内的 Blob 缓存可能导致短暂 404,重拉即可

所以 tag 选择的优先级是:@sha256:固定摘要 > 明确版本号 >latestlatest这类可变 tag 变更后后台会重新同步,期间拉到的可能是旧数据,生产环境建议锁死版本。

常见问题排查

  • 拉取报 not found / 404:先核对镜像名、仓库、tag 是否拼对;再确认在 allows.txt 白名单内;最后确认不是上面的缓存过期窗口。
  • 拉取超时:区分"冷同步慢"和"真失败"——同一镜像第二次拉取如果秒回,说明只是首次同步耗时,把大批量任务挪到闲时执行即可。
  • 白名单规则看不懂:仓库 hack/ 目录下有维护者用的校验脚本,如verify-allows.sh可检查某个镜像是否命中白名单规则,排障时可参考其匹配逻辑。

下一步建议

先用加前缀的方式把手头最慢的那几个镜像跑通,确认"首次慢、二次快"符合预期后,再按需配置 Docker 全局 mirror 和 K8s 的 imageRepository。生产环境记得把latest换成固定版本号或 sha256 摘要;有内网部署需求的可以接着看 本地缓存文档。

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 19:17:17

单轮二自由度车辆动力学模型:从理论推导到Python仿真实战

简介:面向汽车工程与控制相关专业学习者的MATLAB仿真资源,聚焦汽车动力学中的单轮二自由度模型,并围绕车辆操纵稳定性展开分析。该模型将复杂四轮系统简化为具有横向与纵向两个自由度的单轮形式,适合理解轮胎侧偏特性、侧向力与纵…

作者头像 李华
网站建设 2026/9/11 19:15:04

YOLOv5路面状态检测实战:结冰/雪地/湿滑数据集训练与部署

简介:面向智能交通与自动驾驶场景的雨雪天气路面状况数据集,覆盖结冰路面、雪地、雨天湿滑及干燥路面等常见路况,可用于训练路面状态识别目标检测模型。压缩包共1293个文件,包含646张原始jpg路面图片、646个对应txt标注文件及1个y…

作者头像 李华