DaoCloud 容器镜像加速指南:从前缀替换到缓存核验的 4 步验证
2026/9/11 5:59:36 网站建设 项目流程

DaoCloud 容器镜像加速指南:从前缀替换到缓存核验的 4 步验证

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

从国内网络拉取 ghcr.io 上的镜像,经常出现超时和 ImagePullBackOff。本文以 DaoCloud 公开镜像 m.daocloud.io 为例,带你完成镜像前缀替换、地址规范化、白名单检查、缓存一致性核验四步操作,预计耗时 10 分钟。

背景与原理

大量开源镜像托管在 gcr.io、ghcr.io 等国外仓库,国内直连速度不稳定。DaoCloud 镜像是源仓库的 Mirror:首次拉取时懒加载回源同步并缓存,之后拉取直接命中国内缓存。关键特性:sha256 与源完全一致;缓存内容保留 30 天;manifest 内存缓存 1 小时,即源端 tag 更新后最多延迟 1 小时同步。另外,只有 allows.txt 白名单内的镜像会被同步,该文件目前有 1327 行。

对比项直连源仓库经 DaoCloud 镜像
链路国内直连国外 Registry命中国内节点缓存
完整性取决于源站稳定性sha256 与源一致
重复拉取每次都回源30 天内缓存命中

实操步骤

以下脚本位于项目仓库,先克隆:

git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror cd public-image-mirror

替换镜像地址前缀并用 DaoCloud 镜像拉取

目的:最简单的加速方式,无需任何客户端配置。

docker pull m.daocloud.io/ghcr.io/immich-app/immich-server:release

成功判据:拉取完成后docker images能列出该镜像。

📌 关键提示:前缀法要保留完整原始地址(含ghcr.io域名),这与"前缀替换"(把域名换成ghcr.m.daocloud.io)是两种不同的写法,不要混用。

用 correct-image.sh 规范化镜像地址格式

目的:手写地址(如 hub.docker.com/r/xxx)常因域名、tag 缺失导致拉取 404,hack/correct-image.sh 可一键标准化。

bash hack/correct-image.sh "hub.docker.com/r/library/nginx" # 输出:docker.io/library/nginx:latest

成功判据:输出的地址包含域名和 tag 各恰好一份。

关键提示:首段不含点号的地址会自动补docker.io/,没有 tag 的自动补:latest,输出即最终可拉取的完整地址。

用 verify-allows.sh 校验镜像白名单

目的:白名单是镜像能被同步的前提,不在名单里直接拉取会长时间等待。

bash hack/verify-allows.sh allows.txt ghcr.io/immich-app/immich-server echo $? # 输出 0 表示在白名单内,1 表示不在

成功判据:退出码为 0。

关键提示:校验时传不带 tag 的镜像(白名单按仓库粒度匹配);若你需要的镜像未收录,可按项目说明提交需求。

配置 Docker registry-mirrors 加速 docker.io

目的:对 docker.io 下的镜像做一次配置,省去逐镜像加前缀。

// /etc/docker/daemon.json { "registry-mirrors": ["https://docker.m.daocloud.io"] }

该配置只对 docker.io 的拉取生效。

systemctl restart docker docker info | grep -A1 "Registry Mirrors"

成功判据:输出中包含https://docker.m.daocloud.io

⚠️ 关键提示:不要把 docker.io 之外的源站配进 registry-mirrors,各源站内容不同,配置错会适得其反。

结果验证

第一条,验证拉取耗时:

time docker pull m.daocloud.io/ghcr.io/immich-app/ml-worker:release

成功判据:1–3 分钟内完成。参考 DaoCloud 侧的测量:直连国外仓库平均 30 分钟以上、失败率约 40%,经镜像后通常为 1–3 分钟、失败率低于 0.1%。

第二条,验证哈希一致性:

docker inspect --format='{{.RepoDigests}}' m.daocloud.io/ghcr.io/immich-app/ml-worker:release

成功判据:输出的 sha256 与源仓库同一 tag 的 digest 相同,说明拉到的内容与源一致。

注意事项与进阶

  1. ⚠️ 优先用@sha256:指定镜像,其次明确版本 tag,最后才是 latest。latest 这类可变 tag 在源更新后可能仍响应旧数据,且受 1 小时 manifest 缓存延迟影响。
  2. 批量拉取安排在北京时间 01–07 点闲时执行,项目方明确提示其他时段服务拥挤。
  3. 不要假设缓存长期有效。内容只保留 30 天,过期后需重新同步;blob 删除前后存在短暂 404 窗口,重试一般即可恢复。
  4. 纯内网环境建议再部署一层本地 registry 缓存,方法见 docs/local-cache/README.md,核心配置即把本地 registry 指向上游:
proxy: remoteurl: https://m.daocloud.io ttl: 2160h

部署后把拉取前缀从m.daocloud.io换成内网ip:端口即可,用法不变。

DaoCloud 镜像的本质是白名单加懒加载同步,你只需要处理地址与状态核验,同步过程由服务自动完成。最新支持的源站列表和白名单以仓库内 README.md 与 allows.txt 为准。

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询