5 分钟给 Milvus 装上国内镜像加速:DaoCloud 方案实战
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
凌晨拉起一套 Milvus,docker pull的进度条爬了二十分钟,最后死在ErrImagePull上。这几乎是每个国内运维都熟悉的剧本:Milvus 这类公共容器镜像托管在海外 registry,网络条件摆在那儿,急也没用。
public-image-mirror 是 DaoCloud 的公开镜像加速项目:它把海外源站(docker.io、gcr.io、ghcr.io 等)的镜像搬到国内节点就近分发,你要做的只有一件事——给镜像地址加一个前缀,然后正常拉取。
30 秒搞懂 DaoCloud 镜像加速原理
这个服务本质是源 Registry 的 mirror,而不是另一个独立仓库,理解这几点就不会用错:
- 所有 sha256 哈希与源完全一致,采用懒加载机制——你真拉到的层才会被缓存
- 缓存只保留 30 天,过期内容下次拉取要重新同步
- Manifest 有 1 小时内存缓存,tag 变更后一小时才反映新数据
- 新增镜像不用改代码,白名单加一行即可
所以用法极简:在原地址前加m.daocloud.io,比如 Milvus 主镜像变成m.daocloud.io/docker.io/milvusdb/milvus:v2.3.4。
另外还有一套"前缀替换"模式(docker.m.daocloud.io这类写法),但官方明确推荐加前缀的方式,替换表只覆盖十来个知名源站,且需要人工提需求配置,新手优先别碰。
Milvus 镜像加速配置实战:三步走
第一步,先把地址规范化
手写镜像地址容易漏东西:milvusdb/milvus其实是docker.io/milvusdb/milvus:latest的简写。仓库自带规范化脚本,一次补齐域名和默认 tag:
./hack/correct-image.sh milvusdb/milvus # 输出: docker.io/milvusdb/milvus:latesthack/correct-image.sh 里还顺带处理了hub.docker.com、registry.hub.docker.com这类历史写法,统统归一。
第二步,确认镜像在白名单内
加速范围由白名单控制:allows.txt 里按源站/命名空间配规则,docker.io/milvusdb/*已经覆盖 Milvus 社区版全家桶。自己的镜像在不在范围内,用校验脚本一秒出结果:
bash hack/verify-allows.sh allows.txt docker.io/milvusdb/milvus # 无输出且退出码 0 = 命中白名单注意脚本只吃不带 tag 的镜像名。没命中说明该镜像暂未纳入加速范围,需要向维护者提需求。
第三步,改一行配置就能跑
本机先验证一把:
docker pull m.daocloud.io/docker.io/milvusdb/milvus:v2.3.4K8s 里同理,把 image 字段换成加速地址即可:
image: m.daocloud.io/docker.io/milvusdb/milvus:v2.3.4 imagePullPolicy: IfNotPresent到这里,三步走完全程:规范化地址、查白名单、改 yaml。没有中间件,没有额外 agent。
镜像加速踩坑速查:四个真实高频坑
- latest 别随手写进生产。它是可变 tag,变更后缓存可能先返回旧数据,后台还要重新同步;优先级建议:
@sha256:摘要 > 明确版本号 > latest - 30 天过期是隐形雷。层被清理后短窗口内拉取可能 404,遇到偶发失败先重拉一次再怀疑服务
- 别把非 docker.io 源站塞进全局 registry-mirrors。前缀替换表里每个源站内容不同,配置混了必出问题
- 高峰期排队。官方建议把拉取任务挪到凌晨闲时(北京时间 01-07 点),同步队列记录也只保留一小时,事后想查都没痕迹
进阶:内网镜像缓存与全局接管
单台机器加速不够、或者整个内网出不去公网时,翻一下 内网缓存部署文档:在内网起一个 registry,把 proxy 指向m.daocloud.io,之后全公司从本地仓库拉取,用法照旧——换个前缀的事:
docker pull <your-registry-ip>:8888/docker.io/library/nginx:latest再往下就是全局接管思路:不想手改任何 yaml,可以用 Webhook 方案自动改写新建 Pod 的 image 字段;Podman、containerd 也能按源站前缀表各自配置。入口不同,原理还是那句加前缀。
一句话总结:拉取慢的时候,先查地址在不在白名单,再加前缀。两步都通了还没解决,那才是真该抓自己网络的事。
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考