public-image-mirror 镜像加速实操指南:ArgoCD 与 K8s 接入
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
public-image-mirror 是 DaoCloud 的公开容器镜像加速方案,将 gcr.io、docker.io 等海外仓库通过前缀映射到 m.daocloud.io,解决国内拉取 gcr 慢、拉取超时、CI 被镜像阻塞的问题。适合 K8s 集群、ArgoCD 声明式部署、CI 构建与单机容器,改一个镜像前缀即可接入,无需改构建代码。
🐌 拉取卡住的三个现场
- 拉
gcr.io/...时,docker pull长时间卡在下载 manifest,最后超时。 - CI 流水线的拉取步骤反复失败,整条构建被镜像拉取拖住。
- 集群里多个 Pod 同时
ErrImagePull/ImagePullBackOff,节点日志全是拉取超时。
这三个现场的共同点:镜像源在境外,直连链路慢且不稳。你的集群不用换网络,只需要一个离你更近的镜像节点。
方案速览:前缀映射与覆盖范围
public-image-mirror 是源仓库(Registry)的镜像节点,按名称前缀映射:m.daocloud.io/<原地址>指向同一个镜像,sha256 与源保持一致,采用懒加载——首次访问回源同步,后续命中缓存。新增镜像靠 allows.txt 白名单放行,无需改代码,每天自动检查同步情况。
| 维度 | 说明 |
|---|---|
| 覆盖仓库 | gcr.io、docker.io、registry.k8s.io、quay.io、mcr.microsoft.com 等,以 allows.txt 白名单为准 |
| 使用方式 | 镜像地址前加m.daocloud.io/前缀 |
| 适用对象 | K8s 集群、ArgoCD 等声明式部署、CI 构建、单机容器 |
| 生效机制 | 懒加载回源 + 30 天缓存 + manifest 1 小时内存缓存 |
✅ 最小可行路径:一条前缀接入
最简前缀配置
在镜像地址前加m.daocloud.io/,直接拉取,一段话就能跑通:
docker pull m.daocloud.io/docker.io/library/nginx docker pull m.daocloud.io/gcr.io/google-containers/pause:3.9推荐做法:改清单 image 字段
ArgoCD(GitOps 持续交付工具)的 Application 或 Deployment 里,只改image一行,其余不动。你的集群从这一刻起走加速节点:
containers: - name: app # 原: gcr.io/google-samples/hello-app:1.0 image: m.daocloud.io/gcr.io/google-samples/hello-app:1.0备选:前缀替换常用仓库
部分源站支持把域名直接替换成加速域名,写法更短,适合统一基线。每个源站的前缀内容不同,别把 docker.io 之外的站点配给 docker 的registry-mirrors。
| 源站 | 加速前缀 |
|---|---|
| gcr.io | gcr.m.daocloud.io |
| docker.io | docker.m.daocloud.io |
| registry.k8s.io | k8s.m.daocloud.io |
| quay.io | quay.m.daocloud.io |
🔧 验证与排错对照
先用docker pull或kubectl get pod -w确认能拉到,再批量推广。常见现象对照:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 拉取报 404 | 镜像不在 allows.txt 白名单内,未同步 | 确认镜像在白名单;不在则走内网缓存或申请同步 |
| 首次慢、后续快 | 懒加载,首次需回源同步 | 批量拉取安排在闲时(北京时间 01–07 点) |
| latest 拉到旧内容 | manifest 缓存 1 小时,tag 更新有延迟 | 优先用@sha256或明确版本号,少用 latest |
| 长时间超时 | 高峰拥挤或网络不稳 | 换闲时重试;持续慢改用内网缓存代理 |
🏢 进阶:内网缓存四步部署
内网环境可再垫一层本地 Registry,缓存常用镜像、减少对公网的依赖。完整配置见 docs/local-cache,步骤压缩为四步:
- 准备环境:确认已装 Docker 与 Docker Compose。
- 写 Compose 文件:Registry 以
m.daocloud.io/.../registry:3启动,proxy.remoteurl指回https://m.daocloud.io。 - 启动并配置客户端:
docker compose up -d,把内网地址加入/etc/docker/daemon.json的insecure-registries,重启 Docker。 - 验证:用
<内网地址>:8888/<原镜像>拉取,命中缓存明显更快。
services: registry: image: m.daocloud.io/docker.io/library/registry:3 ports: ["8888:8888"] volumes: [cache-data:/var/lib/registry] command: ["/etc/docker/registry/config.yml"] configs: [{source: registry-config, target: /etc/docker/registry/config.yml}] # registry-config 省略:storage 指向 /var/lib/registry, # proxy.remoteurl 指 https://m.daocloud.io,ttl 2160h volumes: {cache-data: {}}{ "insecure-registries": ["<内网地址>:8888"] }下一步
- 官方说明与白名单/限流公开信息:README.md
- 内网缓存完整配置:docs/local-cache
- 镜像是否受支持:查 allows.txt 白名单
- 申请新增或同步镜像:走 issue 模板 .github/ISSUE_TEMPLATE
- 同步队列与服务状态入口:见 README 顶部列出的监控链接(随仓库版本更新)
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考