DaoCloud 容器镜像加速完整指南:3 步搞定镜像拉取慢
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
你被docker pull卡住过吗?进度条挪了 20 分钟,速度最后掉到 KB/s。很多镜像(比如 gcr.io 上的)放在国外,国内拉取就这么慢:跨洋延迟、出口带宽、连接抖动,随便一个都能让你的 CI 排上一小时。DaoCloud 镜像加速(public-image-mirror)就是干这个的:它不自己存镜像,而是在你和源仓库之间加一个加速节点,把镜像地址换个前缀,拉取速度就回来了。这篇先花两分钟讲原理,再教你 3 步完成 Docker 镜像加速配置。
原理速览:给国外镜像备一个"本地仓"
打个比方:DaoCloud 像给国外超市开了个本地仓,货不搬走,只换路线。
- 透明代理:镜像还是存在源仓库,你拉到的 sha256 和源完全一致,拿到的就是同一个东西,不存在"加速版和原版不一样"。
- 懒加载:谁拉了才同步谁,不预先下载全部,不花冤枉存储。
- 分层缓存:manifest(镜像的"目录",记录每层长什么样)缓存 1 小时;blob(真正的内容文件)缓存 30 天;上面再叠一层 1 分钟的内存缓存。同一个镜像第二次拉,基本秒回。
流程拆开就三行:
- 你的机器 →
m.daocloud.io(DaoCloud 加速节点) - 缓存命中 → 直接返回
- 未命中 → 回源到源仓库(docker.io / gcr.io / quay.io 等),顺手缓存下来
⚡ 3 步配置 Docker 镜像加速(最快配置方法)
第 1 步,二选一写地址。
加前缀(官方推荐):原始路径原封不动,前面拼上m.daocloud.io/:
docker pull m.daocloud.io/docker.io/library/nginx:latest或者域名替换:docker.io换成docker.m.daocloud.io,gcr.io换成gcr.m.daocloud.io。这套替换规则是人工维护的,不如前缀方式通用,拿不准就用前缀。
第 2 步,不想改地址就配全局镜像。往/etc/docker/daemon.json加:
{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }第 3 步,执行systemctl restart docker,完成。之后docker pull docker.io/...自动走加速节点,一行命令都不用改。
用 Containerd 或 Podman 的话,同样思路配置即可,README.md 里有现成写法。注意:Docker 的全局 mirror 只对 docker.io 生效,gcr.io 这类源只能走前缀方式。
🐳 个人、团队、生产,一句话怎么选
- 个人开发:前缀一行命令就够,不动任何配置文件,改完立刻可验证。
- 小团队:把第 2 步的全局配置写进初始化脚本或 CI;内网环境建议再套一层本地缓存,拉过一次后全网内都打本地。
- K8s 生产:最疼的是 kubeadm 安装时拉基础镜像慢,把安装配置里的仓库前缀换掉就行:
apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration imageRepository: k8s.m.daocloud.io快多少?边界在哪,说实话
收益是直观的:原来动辄超时的拉取能稳定跑完,同一个镜像的拉取耗时普遍从几十分钟降到几分钟。但它不是万金油,边界要心里有数:
- 白名单机制:只能拉 allows.txt 里登记过的镜像。文件目前 1300 多行,覆盖 docker.io 全量及大量常用仓库,但你的镜像不在其中就拉不到。
- 同步延迟:manifest 缓存 1 小时,源上 tag 更新后,最长 1 小时内你拉到的还是旧的。
- 缓存过期:内容只保留 30 天,冷镜像过期后要重新同步,首次拉取偏慢。
- 高峰拥堵:加速节点自身也有忙闲,批量拉取建议放闲时(北京时间 01:00–07:00)。
合规提醒一句:镜像进生产前,确认它符合你所在组织的许可与数据要求即可,这里不展开。
拉取失败?按这 5 条过一遍
- 不在白名单:
grep -F "docker.io/library/nginx" allows.txt没输出就是不支持,也可以跑仓库里的 verify-allows.sh 脚本核对。 - 路径写错:前缀方式必须保留原始 registry 域名,
m.daocloud.io/nginx是不行的,得写全m.daocloud.io/docker.io/library/nginx。 - 刚更新还是旧版:manifest 缓存 1 小时所致,等一等,或用
@sha256:钉死版本(官方推荐做法)。 - 偶发 404:blob 内存缓存只有 1 分钟,缓存到期边界偶尔会报错,重试一次即可。
- 整体变慢、报 gcr.io 拉取失败或连接超时:多半是高峰拥堵或本地网络问题,换深夜窗口再试。
下一步
原理其实就一句话:镜像不动,把路线换掉。
现在就去"3 步配置"里跑那一行命令,拉个 nginx 对比一下加速前后的体感。如果你的镜像不在白名单里,先去项目提个 Issue,剩下的事他们做。
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考