如何3分钟完成容器镜像加速:告别拉取排队
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
凌晨2点拉一个 gcr.io 上的镜像,进度条停在 12%,重试三次都没动。public-image-mirror 提供容器镜像加速服务:镜像地址加一个前缀,就能从国内节点拉取。新手照下面三步操作,3 分钟就能跑通。
项目定位:它替你做什么
public-image-mirror 是 DaoCloud 维护的公共镜像仓库 Mirror,只做一件事:把 docker.io、gcr.io、ghcr.io 等境外 registry 的镜像按懒加载方式同步到国内节点,sha256 哈希与源站保持一致。适合经常拉取境外镜像的开发者,以及需要批量拉镜像的运维。
原理速览:一次请求怎么走
两个关键参数需要知道:缓存内容保留 30 天,过期后下次请求触发重新同步;Manifest 有 1 小时内存缓存,源站 tag 更新后最多 1 小时才会反映到新镜像。
三步完成第一次镜像加速
第一步:确认镜像在白名单
目标:确认你要拉的镜像在可同步清单里。清单就是仓库根目录的 allows.txt,共 1327 行规则。
用 grep 查一下目标镜像:
grep -n "docker.io/bitnami" allows.txt预期输出(看到通配行,说明 bitnami 下所有镜像都在清单内):
88:docker.io/bitnami/*第二步:给镜像地址加前缀
目标:把原始地址改写成加速地址。推荐方式是加前缀m.daocloud.io/;另一种方式是按源站替换域名,如 gcr.io 换 gcr.m.daocloud.io,共 11 个源站,对照表在 README.md 里。
以 Kafka 为例,改写前后是:
# 原始地址 docker.io/bitnami/kafka:3.9.0 # 加前缀后 m.daocloud.io/docker.io/bitnami/kafka:3.9.0第三步:拉取并验证
目标:确认加速链路可用,且拉到的镜像内容没被改动。
docker pull m.daocloud.io/docker.io/bitnami/kafka:3.9.0 docker run --rm m.daocloud.io/docker.io/bitnami/kafka:3.9.0 version预期看到Download complete并成功进入镜像,version命令输出 Kafka 版本号。如果速度仍不理想,多半是队列拥堵,见下面的避坑表。
进阶:Docker 与 K8s 客户端统一镜像加速
每个镜像都手动改前缀太麻烦,可以把加速固化到客户端配置里,一劳永逸。
Docker 客户端:在/etc/docker/daemon.json中加入镜像源。注意 registry-mirrors 只支持 docker.io,gcr.io 等其他源站请继续用前缀方式:
{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }改完执行systemctl restart docker,之后拉 docker.io 的镜像会自动走加速链路。
Kubernetes(kubeadm):在 ClusterConfiguration 里改一个字段,节点组件(kube-proxy、CoreDNS 等)安装时就走加速:
imageRepository: k8s.m.daocloud.io如果机房完全不通外网,还有内网二级缓存玩法:用 docker compose 部署一个本地 registry 做代理,步骤参考 docs/local-cache/。
常见下载报错速查 ⚠️
| 报错现象 | 原因 | 解法 |
|---|---|---|
| 拉取报 404 | 缓存过期重同步中,或 Blob 清理窗口期(1 分钟)内被删 | 稍等重新 pull,或指定固定版本 tag |
| 同 tag 内容变了 | latest 是可变 tag,源站更新后后台重新同步 | 优先用 @sha256,其次固定版本号 |
| 镜像不在 allows 清单 | 白名单未覆盖该镜像 | 在项目仓库提 Issue 申请新增 |
| 高峰期拉取很慢 | 同步队列拥挤 | 任务放到凌晨 01-07 点(北京时间) |
| gcr 镜像配进 registry-mirrors 报错 | Docker 该配置只支持 docker.io | 改用 gcr.m.daocloud.io 前缀 |
收益与社区入口
- 白名单覆盖 1327 行镜像规则,docker.io 全量加主流源站在列
- 11 个境外源站支持前缀替换,一套写法通用
- 缓存保留 30 天且 sha256 与源站一致,拉到的镜像内容可验证
想提交新镜像需求或反馈问题,去项目仓库提 Issue 即可;镜像校验的配套脚本放在 hack/ 目录。下期讲内网二级缓存:把镜像加速部署进自己的机房。
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考