公司动态
镜像加速终极指南:3 分钟把 gcr.io 下载提速 20 倍
镜像加速终极指南3 分钟把 gcr.io 下载提速 20 倍【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror周五凌晨两点我盯着docker pull的进度条一动不动58KB/s还剩 1.2GB照这个速度要再等 6 个小时。断网重试进度清零项目联调延期两天。这是每个国内开发者的日常——gcr.io、ghcr.io、quay.io 这些镜像仓库全在国外直连速度普遍不到 100KB/s跨洋链路丢包率高达 30%。DaoCloud 的开源项目 public-image-mirror 专治这个病一个连接全球源站、面向国内用户的稳定容器镜像加速服务把小时级的拉取压缩到分钟级。下面是我把生产环境镜像整体迁移到加速源的全过程可直接复制照做。容器镜像加速的底层机制一图流先看整体机制再上手操作。把它想成国内快递驿站海外仓库发货又慢又贵驿站第一次收到你的订单才去海外调货懒加载到货后存进本地仓之后整个园区的人取同一件货都直接走驿站谁都不用再等跨境物流。你不需要提前登记、不需要自己建仓首次请求自动触发同步。吃透 3 个核心机制懒加载、哈希校验、白名单1. 懒加载同步首次请求即触发。项目不预先搬运全量镜像而是你第一次访问时才从源站同步并缓存。Manifest 内存缓存 1 小时源站 tag 更新后最多 1 小时生效磁盘缓存 30 天过期自动重新同步。效果是冷门镜像首次拉取略慢热门镜像几乎秒开。2. 哈希一致性校验内容与源站 100% 一致。它是 mirror不是第三方重打 tag所有镜像的 sha256 与源站完全一致可用docker inspect核对 RepoDigest。项目在 hack/ 目录提供 verify-allows.sh、verify-image-match.sh 等脚本做日常巡检从机制上杜绝版本混乱。3. 白名单准入 闲时限流稳定性的底线。allows.txt 目前维护 1315 条镜像/命名空间白名单按需申请防止恶意或超大镜像拖垮带宽官方建议把大镜像的同步放到凌晨 01-07 点错峰体验更佳。Prometheus 镜像国内加速从白名单检查到哈希验证全流程我以 quay.io 上的 Prometheus国内拉取的老大难为例完整走一遍全程约 3 分钟。第一步克隆项目并确认白名单# 克隆项目拿到 allows.txt 与官方校验脚本 git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror cd public-image-mirror # 确认目标镜像是否在支持列表 grep quay.io/prometheus allows.txt # 或用官方脚本校验命中返回 0 ./hack/verify-allows.sh allows.txt quay.io/prometheus/prometheus echo 已在白名单放心加速预期输出quay.io/prometheus/*与quay.io/prometheus-operator/*均在列表中说明整个命名空间都支持加速。第二步拼加速地址两种姿势任选# 方式一加前缀推荐所有源站通用 # 规则m.daocloud.io/完整源镜像 m.daocloud.io/quay.io/prometheus/prometheus:v2.53.0 # 方式二域名替换仅限 README 列出的 12 个源站 # 替换表quay.io - quay.m.daocloud.io quay.m.daocloud.io/prometheus/prometheus:v2.53.0注意前缀替换规则是人工维护的表中没列出的源站别硬套直接提 issue 申请更不要把 docker.io 之外的替换域名配置进 Docker 的 registry-mirrors。第三步拉取、启动、验哈希# 拉取加速镜像首次触发同步之后全部走缓存 docker pull m.daocloud.io/quay.io/prometheus/prometheus:v2.53.0 # 启动容器验证版本 docker run --rm m.daocloud.io/quay.io/prometheus/prometheus:v2.53.0 --version # 核对 RepoDigest确认 sha256 与官方源一致 docker inspect --format{{index .RepoDigests 0}} m.daocloud.io/quay.io/prometheus/prometheus:v2.53.0提示生产环境优先用sha256:锁定镜像其次用明确版本号 tag。latest这类可变 tag 更新后旧缓存最多 1 小时后才会同步新内容容易踩版本漂移的坑。K8s 与内网场景的镜像加速进阶配置K8s 集群整体加速。用 kubeadm 安装时把镜像仓库指向加速源一行配置全集群生效apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration imageRepository: k8s.m.daocloud.iocontainerd 则为各源站配置 mirror 指向如 gcr.m.daocloud.io、quay.m.daocloud.ioDocker 更简单在/etc/docker/daemon.json的 registry-mirrors 加一行https://docker.m.daocloud.io重启即生效。内网部署私有缓存代理。项目在 docs/local-cache/README.md 给出开箱即用的 docker-compose 方案用registry:3的 proxy 模式指向m.daocloud.io缓存 TTL 设 2160 小时90 天。团队所有机器只需改一处 daemon.json即可共享同一个缓存重复拉取零公网流量离线环境也能部署。加速效果实测速度与成功率量化对比对比项直连 quay.io经 m.daocloud.io 加速平均下载速度约 50-100KB/s数 MB/s 起步拉取 3.9GB 镜像耗时2 小时以上约 6 分钟单次拉取成功率约 75%易中断99.9%内容一致性官方源sha256 与源站完全一致服务覆盖 gcr.io、ghcr.io、quay.io、registry.k8s.io、mcr.microsoft.com、nvcr.io、docker.elastic.co 等 12 个主流源站白名单 1315 条基本覆盖国内开发者的高频镜像需求。申请新镜像与参与贡献的正确姿势想用的镜像不在白名单直接提 issue 申请附上镜像地址和用途维护者响应很快想参与共建hack/ 目录下的校验与格式化脚本欢迎 PR。下期我打算拆解如何用 docs/local-cache 方案搭建公司级私有镜像节点把加速能力真正握在自己手里。先把今天的方案用起来评论区聊聊你拉过最慢的镜像是什么。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考