镜像加速实战:public-image-mirror 从单条命令到集群配置 📅 发布时间:2026/9/11 9:27:08 👁 浏览次数: 镜像加速实战public-image-mirror 从单条命令到集群配置【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirrordocker pull gcr.io/...在国内网络下经常卡在 Pulling from... 不动这就是 public-image-mirror 要解决的问题。它是 DaoCloud 开源的公共镜像加速服务不改镜像内容只改拉取路径。如果你需要在国内网络环境里稳定拉取海外公共镜像这篇按先跑通、再理解的顺序讲。先跑通一条命令体验镜像加速最快的体验方式是给原地址加一个加速前缀然后直接拉docker pull m.daocloud.io/docker.io/library/nginx:latestm.daocloud.io是加速入口后面的docker.io/library/nginx:latest是原镜像地址原样保留。服务对外的 sha256 与源仓库一致镜像内容不变变的只是拉取走的是缓存节点。docker run -d -P m.daocloud.io/docker.io/library/nginx官方 README 给出的就是这个快速开始命令可以直接替换成你自己的镜像。什么场景用哪个域名前缀添加与前缀替换服务支持两种写法。前缀添加推荐任何镜像都适用。规则是取完整原始地址含源站域名在开头加m.daocloud.io/gcr.io/google-containers/pause:3.6 ↓ m.daocloud.io/gcr.io/google-containers/pause:3.6前缀替换仅对人工配置过加速域名的源站生效把源站域名替换成下表中的加速域名即可其余部分不变。例如docker.io/library/busybox替换为docker.m.daocloud.io/library/busybox。源站加速域名说明docker.iodocker.m.daocloud.ioDocker Hubgcr.iogcr.m.daocloud.ioGoogle Container Registryghcr.ioghcr.m.daocloud.ioGitHub Container Registryregistry.k8s.iok8s.m.daocloud.ioKubernetes 官方镜像k8s.gcr.iok8s-gcr.m.daocloud.io该源站已迁移至 registry.k8s.iomcr.microsoft.commcr.m.daocloud.io微软容器镜像源nvcr.ionvcr.m.daocloud.ioNVIDIA NGCquay.ioquay.m.daocloud.ioQuay 镜像源docker.elastic.coelastic.m.daocloud.ioElastic 镜像源dhi.iodhi.m.daocloud.iodhi 源registry.ollama.aiollama.m.daocloud.io实验内测中注意给 Docker 守护进程配置 registry-mirrors 时只应填docker.m.daocloud.io不要把 docker.io 之外的源站加速域名配进去每个源站的内容是不同的。它是怎么工作的懒加载缓存与白名单服务本质是源 Registry 的镜像采用懒加载拉取命中缓存就直接交付未命中时把任务放入同步队列由后台从源站拉取并写入缓存整个过程对拉取方透明。所有同步都受白名单约束仓库根目录的 allows.txt 用通配规则描述可同步范围单个镜像、某个仓库下的全部镜像、整站通配/后跟**三种粒度都有文件里约一千三百条规则新增镜像不需要改代码。几个影响使用的参数缓存内容保留 30 天过期后需要重新同步Manifest 有 1 小时内存缓存源站的 tag 更新最迟约 1 小时才会同步同步队列状态页只保留 1 小时记录。所以首次拉取某个新镜像可能要等几分钟排队状态页只认最近一小时。从单机到集群守护进程与 K8s 的加速配置一行配置让 Docker 全局走镜像加速Docker 的 registry-mirrors 只对 docker.io 生效其他仓库仍要靠前缀。编辑/etc/docker/daemon.json{ registry-mirrors: [ https://docker.m.daocloud.io ] }保存后执行systemctl restart docker此后拉取 Docker Hub 镜像自动走加速链路。Podman 的规则写在/etc/containers/registries.confrootless 模式也可放用户目录每个源站单独指定 mirror[[registry]] location docker.io [[registry.mirror]] location docker.m.daocloud.iogcr.io、ghcr.io、quay.io、registry.k8s.io 都可用同样写法配上对应加速域名。K8s 集群镜像拉取加速配置kubeadm 集群在 ClusterConfiguration 里改两处coredns 等系统组件随之一并走加速源apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration imageRepository: k8s.m.daocloud.io dns: imageRepository: k8s.m.daocloud.io/corednskind 本地集群在创建时直接换镜像kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1已有集群想给所有 Pod 统一改写镜像可以部署 repimage只用 Webhook 自动替换新建 Pod 的 image 字段不需要逐个改 yaml 和 Chart。自查与排障现象、排查命令、处理办法现象排查处理拉取被拒绝或持续 404grep -F 仓库或镜像路径 allows.txt确认是否命中白名单规则不在名单内通过 Issue 申请添加命中/*规则时确认没有多加一级目录tag 更新后拉到旧内容检查是否使用了 latest 这类可变 tag优先用sha256:摘要寻址其次固定版本号可变 tag 更新后需后台重新同步之前能拉、现在重新变慢缓存已过期内容保留 30 天或队列拥挤重新拉取触发同步把拉取任务放到凌晨闲时北京时间 01-07 点排队状态查不到同步队列状态页仅保留最近 1 小时记录在拉取后一小时内查看或稍后重试拉取完全离线或内网场景可以按 docs/local-cache/README.md 自建 registry 做本地缓存代理容器里跑 registryproxy 指向https://m.daocloud.io之后拉取只需把前缀换成内网地址。小结public-image-mirror 用名称映射加懒同步把海外公共镜像的拉取路径改道到国内缓存节点镜像内容与哈希保持不变。三个可以继续做的方向按 local-cache 文档搭内网缓存降低外网依赖接入 repimage 这类 webhook 让存量集群不改 yaml 就全局加速把同步队列状态和服务状态页纳入例行巡检。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考