news 2026/9/11 14:54:30

告别 2 小时等待:public-image-mirror 一步搞定国内 Docker 镜像加速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别 2 小时等待:public-image-mirror 一步搞定国内 Docker 镜像加速

告别 2 小时等待:public-image-mirror 一步搞定国内 Docker 镜像加速

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

凌晨十一点,CI 流水线卡在镜像拉取阶段,docker pull盯着 1KB/s 的进度条一动不动。镜像都放在国外仓库,国内镜像拉取就是这么磨人。public-image-mirror(DaoCloud 的国内镜像加速代理服务)直接把问题绕开:在原地址上加一个前缀,镜像高速拉下来,sha256 哈希和源站完全一致。

⚡️ 一句话定位:用上之后你的体感变化

public-image-mirror 是个国内镜像加速代理——国外源站的稳定镜像,而不是把整个仓库复制一份放国内。

用上的体感变化:

  • 原来拉 2 小时的镜像,现在 2 分钟内搞定
  • 不再动不动断连超时,K8s 集群能整体覆盖
  • 内容与源站 sha256 一致,不用担心内容被改动
  • 加镜像不用改任何代码,加个前缀就行

🐳 30 秒跑通:改个前缀就完事

不用装东西、不用做配置,在原地址前加m.daocloud.io/前缀:

docker.io/library/busybox ↓ m.daocloud.io/docker.io/library/busybox

源站在支持列表里的,也可以直接替换前缀:

源站替换为备注
docker.iodocker.m.daocloud.io
gcr.iogcr.m.daocloud.iogcr 国内加速走这个
ghcr.ioghcr.m.daocloud.io
k8s.gcr.iok8s-gcr.m.daocloud.io已迁移到 registry.k8s.io
registry.k8s.iok8s.m.daocloud.ioK8s 组件镜像
mcr.microsoft.commcr.m.daocloud.io
quay.ioquay.m.daocloud.io

现在就能试一把:

docker run -d -P m.daocloud.io/docker.io/library/nginx

几秒后页面出来,就成了。

🔧 场景一:daemon.json 加一行搞定 Docker 全局加速

什么情况下用:单机上用 Docker 手动拉镜像,不想每次都记得加前缀。

怎么配:往/etc/docker/daemon.json加 registry-mirrors 配置:

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

注意这一行只对 docker.io 生效,别把 gcr.io 之类的塞进来(后面坑里细说)。然后重启:

sudo systemctl restart docker

配完怎么验证:正常拉任意一个 docker.io 镜像,比如docker pull docker.io/library/nginx,会自动转发到加速源,下载速度明显起飞就说明配置生效了。

📦 场景二:Kubernetes 集群镜像加速

什么情况下用:搭集群(kubeadm / kind),或者存量 Pod 拉镜像总是超时。

kubeadm 建集群:配置文件里把镜像仓库指到 K8s 组件镜像加速站:

apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration dns: imageRepository: k8s.m.daocloud.io/coredns # coredns 走 K8s 加速站 imageRepository: k8s.m.daocloud.io # 集群组件都从这里拉

kind 本地集群:一条命令的事:

kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1

存量集群的 Pod:不想改 yaml 的话,用 Webhook(repimage)自动改写新建 Pod 的镜像地址,一条 kubectl 命令装好;containerd 环境也可以照官方 hosts 配置给各 registry 配 mirror。细节见 README.md 里的 "Accelerate Kubernetes" 部分。

🗄️ 场景三:内网本地缓存(进阶选读)

什么情况下用:内网或对外网依赖大的环境,想把常用镜像缓存到本地反复复用。

怎么配:用 docker-compose 起一个 registry proxy,让它代理到 m.daocloud.io:

services: registry: image: m.daocloud.io/docker.io/library/registry:3 # registry 镜像本身也走加速源 ports: - 8888:8888 volumes: - cache-data:/var/lib/registry # ... command/configs 挂载细节见完整文件 configs: registry-config: content: | version: 0.1 proxy: remoteurl: https://m.daocloud.io # 关键:代理到加速源 ttl: 2160h # 本地缓存保留 90 天 volumes: cache-data: {}

docker compose up -d启动后,把本地地址加进客户端 daemon.json 的insecure-registries并重启 Docker。之后拉镜像把m.daocloud.io前缀换成你的本地地址即可,例如10.0.0.5:8888/docker.io/library/nginx:latest。完整 compose 文件和客户端配置见 docs/local-cache/README.md。

配完怎么验证:第一次拉某个镜像会慢一点(它在回填缓存),第二次起直接从本地磁盘走,速度立竿见影。

⚠️ 避坑与调优:我踩过的提醒你一句

如果你把 gcr.io、ghcr.io 塞进 registry-mirrors → 别费劲了。Docker 的 registry-mirrors 只对 docker.io 生效,其他源站内容各不相同,得用各自的替换站,这也是官方反复强调的。

如果某天第一次拉突然变慢 → 别慌,是缓存过期。缓存内容只保留 30 天,过期后会重新从源同步;另外 Manifest 有 1 小时内存缓存,上游 tag 变了要等 1 小时才会同步过来。

如果白天拉取拥挤 → 挪到闲时。官方建议把拉取任务放在凌晨(北京时间 01-07 点),其他时段非常拥挤。

如果担心内容漂移 → 钉死版本号。优先用@sha256:指定镜像,其次用明确版本号的 tag,慎用 latest 这种可变 tag——它变更后先响应旧数据,后台再重新同步。

如果想确认服务状态 → 官方入口现成的。README.md 里给了同步队列和服务状态监控的入口,同步队列只保留一小时的同步记录,排查"某镜像怎么一直 404"先去那儿看一眼。

下次拉镜像,别再盯着进度条了。想查支持源站完整列表,克隆下来翻一遍:

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

然后把"加前缀"写进你们团队的镜像使用约定里。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 14:53:42

CMSIS-5不是库而是嵌入式宪法:接口契约与编译期治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 14:48:57

HashMap底层原理与面试高频考点详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 14:48:55

从零训练MiniMind轻量模型:显存优化与部署实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 14:48:45

JAVA计算机毕设之基于 SpringBoot 的鲜花网络销售系统的设计与实现 基于 SpringBoot 的鲜花商城购物平台(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华