gcr.io_mirror GCR 镜像加速使用指南:3 步拉取 GCR 镜像
【免费下载链接】gcr.io_mirrorall of the gcr.io docker image mirror项目地址: https://gitcode.com/gh_mirrors/gc/gcr.io_mirror
gcr.io_mirror 是一个 GCR 镜像加速工具,把 gcr.io、k8s.gcr.io 等源上的镜像经加速源拉下来后自动改回原始镜像名。适合经常需要拉 GCR 镜像、又被网络卡住的朋友。
为什么拉取老是超时?
直接docker pull gcr.io/...的时候,经常出现长时间无响应、传一部分就中断的情况,k8s.gcr.io 和 registry.k8s.io 同样如此。部署 Kubernetes 集群或 CI 拉依赖时,整条流水线都卡在这一步。
gcr.io_mirror 的思路是:把目标镜像转存到一个公网可达的加速源(Docker Hub),拉下来后再把 tag 改回原名。你的脚本和清单不用做任何改动。
📦 支持什么:功能一览
- 覆盖 5 类镜像源:gcr.io、k8s.gcr.io、registry.k8s.io、quay.io、ghcr.io
- 拉取加速镜像后,自动
docker tag还原成原始镜像名 - 提供单镜像脚本
pull-k8s-image.sh与批量脚本batch-pull-k8s-image.sh - 转换规则集中在
rules.yaml,可自行扩展新源
3 步拉下 GCR 镜像
- 克隆项目:
git clone https://gitcode.com/gh_mirrors/gc/gcr.io_mirror cd gcr.io_mirror- 给脚本执行权限:
chmod +x pull-k8s-image.sh- 传入原始镜像名执行:
./pull-k8s-image.sh k8s.gcr.io/federation-controller-manager-arm64:v1.3.1-beta.1脚本内部做两件事:先docker pull anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1,再docker tag成k8s.gcr.io/federation-controller-manager-arm64:v1.3.1-beta.1,本地拿到的就是原名镜像。
镜像转换语法怎么用
通用规则:原名gcr.io/namespace/{image}:{tag}对应的加速名是anjia0532/namespace.{image}:{tag},即把分隔 namespace 的斜杠换成点号,并冠上加速账号前缀。
k8s.gcr.io 是特例,先等价映射到 gcr.io/google-containers,再走转换:
k8s.gcr.io/{image}:{tag} <==> gcr.io/google-containers/{image}:{tag} <==> anjia0532/google-containers.{image}:{tag}转换前后对照:
| 原始镜像 | 加速后镜像 |
|---|---|
| gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1 | anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1 |
🚀 批量拉取镜像的方法
把要拉的镜像逐行写进img.txt:
gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1 gcr.io/google-containers/kube-apiserver-amd64:v1.16.2 k8s.gcr.io/pause:3.1然后运行:
chmod +x batch-pull-k8s-image.sh ./batch-pull-k8s-image.sh脚本会逐行读取img.txt,批量转换成加速名拉取,最后统一改回原始镜像名。
自定义扩展规则
rules.yaml里定义了各前缀如何映射,当前内容:
"^gcr.io/": "" "^k8s.gcr.io": "google-containers" "^registry.k8s.io": "google-containers" "^quay.io": "quay" "^ghcr.io": "ghcr" "^docker.io": "docker"按这个格式加一行,就能接进新的镜像源。
镜像没找到怎么办
两条路,按需选:
选项 A:提 Issue 请求搬运。标题遵循[PORTER]镜像名:tag这种写法,比如[PORTER]k8s.gcr.io/federation-controller-manager-arm64:v1.3.1-beta.1。需要指定平台时写成[PORTER]镜像名:tag|平台类型,比如[PORTER]busybox:latest|linux/arm64。Issue 必须带porter标签(直接用模板创建即可,别自行改 label),正文可留空。注意一次只能同步一个镜像。提交后 CI 会自动完成拉取并转推到 Docker Hub。
选项 B:自己维护。Fork 一份项目,按上文格式修改rules.yaml,接上你需要的源。
⚠️ 使用前注意这些
- 项目不以盈利为目的,不承诺永久可用,但会尽量保持向后兼容。
- 只做转存,不保证镜像安全可靠,用之前请自行确认上游。
- 平台策略等不可控因素导致拉不到镜像并造成损失的,项目不承担责任。
- 目前仅支持上述指定镜像源,其他源可提 Issue 反馈,或 Fork 后自行修改。
按上面 3 步先拉一个示例镜像,速度对比最直观。
【免费下载链接】gcr.io_mirrorall of the gcr.io docker image mirror项目地址: https://gitcode.com/gh_mirrors/gc/gcr.io_mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考