尧图精选

新手镜像拉取加速指南:DaoCloud Docker 镜像源从验证到生效

🕒 发布时间:2026/9/11 10:11:37 📁 来源:尧图网络
新手镜像拉取加速指南DaoCloud Docker 镜像源从验证到生效【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror部署时一个 nginx 镜像从 docker.io 拉了两个小时还没下完。DaoCloud 镜像加速public-image-mirror就是为这种场景准备的它把海外镜像仓库缓存到离国内更近的节点作为 Docker 镜像源使用把地址改成加速前缀就能完成镜像拉取加速。原理一句话讲清它是源仓库的懒加载 Mirror它本身不重新构建任何镜像只是源仓库Registry的 Mirror你第一次拉取时它从源站抓取内容并缓存下来懒加载之后你的请求直接命中缓存所有 sha256 与源保持一致。有两个缓存细节会影响你的体感缓存内容只保留 30 天过期后需要重新同步Manifest 有 1 小时内存缓存源站 tag 更新后要等约 1 小时才会同步新内容。你 docker pull | v m.daocloud.io ── 缓存命中 ────────── 直接返回 | └── 未命中 ── 回源 docker.io / gcr.io 等拉取并缓存先验证确认目标镜像在不在同步白名单镜像白名单验证只需要一条命令。先克隆仓库后面的校验脚本都在里面git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror cd public-image-mirror然后用仓库自带的 hack/verify-allows.sh 检查目标镜像是否在 allows.txt 白名单中。注意传入不带 tag 的镜像地址./hack/verify-allows.sh allows.txt docker.io/library/nginx # 退出码为 0无报错输出 已被白名单覆盖allows.txt 的规则用通配符表达docker.io/*表示该层级**表示其下所有子路径。以 nginx 为例它作为docker.io/library/nginx明确在列可以放心加速。把 docker.io 地址换成加速地址地址转换有两种方式推荐第一种加前缀对任何源站都成立docker.io/library/nginx:alpine | v m.daocloud.io/docker.io/library/nginx:alpine # 推荐加前缀 | v docker.m.daocloud.io/library/nginx:alpine # 备选专用域名前缀替换换完地址后任何命令都不用改直接拉就行docker run -d -P m.daocloud.io/docker.io/library/nginx前缀替换的专用域名按源站区分k8s.gcr.io 已迁移到 registry.k8s.io对应 k8s.m.daocloud.io源站替换为docker.iodocker.m.daocloud.iogcr.iogcr.m.daocloud.ioghcr.ioghcr.m.daocloud.ioregistry.k8s.iok8s.m.daocloud.ioquay.ioquay.m.daocloud.io按你的运行环境选一条路你用的是哪种运行时或流水线下面每条都只给最小改动点。本机 Docker编辑/etc/docker/daemon.json然后重启 Docker{ registry-mirrors: [https://docker.m.daocloud.io] }注意registry-mirrors只对 docker.io 生效不要把 gcr.io 等其他源站配到这里。Kubernetes 集群K8s 镜像加速配置两种方式直接改工作负载的 image 字段containers: - name: node-exporter image: m.daocloud.io/docker.io/prom/node-exporter:v1.8.2或者加速 kubeadm 初始化在 ClusterConfiguration 里把imageRepository指向k8s.m.daocloud.iokind: ClusterConfiguration imageRepository: k8s.m.daocloud.ioContainerd按官方 hosts 格式为 docker.io 增加一个 host 即可# /etc/containerd/certs.d/docker.io/hosts.toml server https://registry-1.docker.io [host.https://docker.m.daocloud.io] capabilities [pull, resolve]CI/CD 流水线在流水线里定义一个前缀变量所有拉取引用统一拼接切换源只改一处variables: MIRROR: m.daocloud.io script: - docker pull ${MIRROR}/docker.io/prom/node-exporter:v1.8.2怎么确认加速真的生效一个可观测动作对同一个镜像分别计时拉取对比耗时与摘要time docker pull m.daocloud.io/docker.io/library/nginx:alpine两个判断依据一是耗时从直接连源站的数十分钟降到秒级首次未命中缓存时需要回源会慢一些属正常二是拉取后执行docker images --digests显示的 digest 应与从源仓库直接拉取该 tag 得到的一致——digest 相同说明你拿到的就是源站那份内容而不是过期或错位的缓存。没生效对照这 4 个高频原因第一我把 docker.m.daocloud.io 配进了 registry-mirrors但拉 gcr.io 的镜像还是慢。Docker 的registry-mirrors只对 docker.io 生效且每个源站内容不同其他源站必须走加前缀或专用域名方式如 gcr.m.daocloud.io不能混配。第二我拉了 latest 却拿到旧版本。latest 是可变 tagManifest 内存缓存 1 小时源站更新后要等约 1 小时才同步期间旧数据优先响应。建议用sha256:摘要固定镜像其次用明确版本号最后才考虑 latest。第三拉取中途报 404。缓存内容只保留 30 天过期后需要重新同步Blob 还有 1 分钟内存缓存如果这期间该 blob 到 30 天期限被删除就会报 404。稍等片刻重试即可。第四白天拉取慢、凌晨拉取快。服务在白天时段比较拥挤可以把拉取任务放在闲时北京时间 01:00-07:00执行体感差异明显。进阶内网缓存与批量场景如果你的环境是内网、或要批量管理镜像地址两个方向可以参考部署内网缓存在内部署一个本地 registry 作为 m.daocloud.io 的缓存代理减少对外网依赖见 docs/local-cache/README.md。地址与白名单处理脚本均在 hack/ 下correct-image.sh 把不完整的镜像名补全为标准形式如nginx→docker.io/library/nginx:latestfmt-image-match.sh 用于精简白名单中的冗余规则配合前面的 verify-allows.sh 使用。一句话总结确认白名单、改地址前缀、验证 digest 一致——DaoCloud 镜像加速的全部流程就这三步。涉及的文件allows.txt同步白名单、hack/校验脚本、docs/local-cache/README.md内网缓存文档。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →