十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

public-image-mirror 使用指南:DaoCloud 公开容器镜像加速仓库配置教程

public-image-mirror 使用指南:DaoCloud 公开容器镜像加速仓库配置教程 public-image-mirror 使用指南DaoCloud 公开容器镜像加速仓库配置教程【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror在国内网络环境下从 docker.io、ghcr.io、gcr.io 等海外仓库拉取容器镜像时经常遇到超时、断流或长时间卡在下载某一层的状况。public-image-mirrorDaoCloud 公开镜像仓库是一个白名单制的公开镜像同步服务将指定范围内的海外公开镜像缓存到国内节点使用者只需改写镜像地址前缀即可完成加速。本文基于仓库内的 README、allows.txt 白名单和 hack 目录下的校验脚本梳理从单机到 Kubernetes 的完整配置方法。项目定位与工作机制public-image-mirror 本质上是一个源 Registry 的 Mirror镜像站而不是一个独立的镜像仓库。它靠三套机制工作白名单准入只有 allows.txt 中列出的仓库当前共 1327 条规则覆盖 docker.io、ghcr.io、gcr.io、quay.io 等才会被同步。白名单支持通配符docker.io/alpine/*表示该仓库下一层的全部镜像**表示递归匹配子路径。懒加载同步镜像不是预先全量搬运的。首次有人拉取时服务从源仓库拉取并缓存之后再拉取直接命中缓存。哈希一致性缓存内容的 sha256 与源仓库保持完全一致因此可以放心按摘要拉取。需要注意的时效规则缓存内容只保留 30 天过期后需重新同步Manifest 的内存缓存为 1 小时Blob 的内存缓存为 1 分钟。这意味着latest这类可变 tag 在源更新后最多要等 1 小时才生效且过期数据可能被替换回旧版本。快速上手不需要部署任何组件改写地址即可使用确认目标镜像在白名单内例如docker.io/nginx属于docker.io/*规则可以直接使用。在原始镜像地址前加上m.daocloud.io/前缀docker pull m.daocloud.io/docker.io/library/nginx验证拉取结果正常docker images | grep nginx也可以用一行命令直接跑起来README 给出的最小示例docker run -d -P m.daocloud.io/docker.io/library/nginx按场景的用法个人单机前缀改写最轻量的方式不需要改任何守护进程配置适合临时拉取一两个镜像。地址转换规则如下原仓库改写方式示例docker.io加m.daocloud.io/前缀m.daocloud.io/docker.io/library/busybox任意支持仓库域名前缀替换ghcr.io/x/y→ghcr.m.daocloud.io/x/y完整的前缀替换映射表含 docker.elastic.co、mcr.microsoft.com、nvcr.io、registry.k8s.io 等 12 个源站见 README.md 中支持前缀替换的 Registry一节。官方推荐优先使用加前缀的方式前缀替换属于人工配置的兼容项。团队开发机配置全局镜像加速团队内多人开发机建议做守护进程级配置之后docker pull原地址即可自动走加速节点。Docker向/etc/docker/daemon.json写入镜像加速源{ registry-mirrors: [https://docker.m.daocloud.io] }Podman在/etc/containers/registries.conf中为各源站配置 mirror与 Docker 不同Podman 可以为 docker.io 之外的仓库gcr.io、ghcr.io、quay.io 等逐个配置 mirror示例配置同样见 README。配置完成后重启对应服务生效。注意 Docker 的registry-mirrors只应对 docker.io 生效不要把其他源站的加速域名配进去。Kubernetes 环境分两类做法。改清单的在 kubeadm 的 ClusterConfiguration 中把imageRepository指向k8s.m.daocloud.iocoredns 使用k8s.m.daocloud.io/coredns创建 kind 集群时直接把 node 镜像替换为m.daocloud.io/docker.io/kindest/node:v1.22.1。不改清单的部署 repimage 这个 Mutating Webhook它会自动改写所有新建 Pod 的 image 字段加上 mirror 前缀存量 yaml 和 Helm chart 无需改动README 提供了安装命令。进阶配置均为可选项标签策略可选官方建议的优先级是sha256:摘要 明确版本号 tag latest。可变 tag 变更后会响应旧数据并触发后台重新同步生产环境尽量锁定具体版本。执行时机可选同步服务在白天负载很高批量拉取任务建议放在北京时间凌晨 01-07 点执行。内网缓存可选公司内网无法直连公网时可用 Docker Registry 的proxy功能搭一层本地缓存代理把m.daocloud.io作为 remoteurl 反向代理到内网步骤和完整 compose 文件见 docs/local-cache/README.md。白名单自助校验可选仓库 hack/ 目录提供了维护与校验脚本verify-allows.sh allows.txt image可在本地判断某个镜像是否命中白名单规则支持*/**通配符匹配不用等实际拉取失败才发现correct-image.sh则用于把hub.docker.com/r/、裸镜像名等写法规范化为docker.io/...标准形式。常见问题现象拉取报 404 或镜像不存在原因镜像不在白名单内服务拒绝为其建立缓存。解决先在本地用 hack/verify-allows.sh 核对规则确认不在名单内的到项目 Issue 区申请添加规则获批后才会同步。现象latest 标签拉到的是旧版本原因Manifest 内存缓存 1 小时tag 指向的新镜像不会立刻生效且 30 天过期机制下缓存数据可能被重置。解决改用sha256:摘要或固定版本号拉取避免依赖可变 tag。现象同一时间批量拉取全部超时原因白天是同步高峰后台队列拥塞。解决把批量任务挪到凌晨低峰期或先拉取一个镜像触发同步、成功后再复用缓存。现象配了 registry-mirrors 后 ghcr.io 等仓库没走加速原因Docker 的registry-mirrors只对 docker.io 生效这是 Docker 自身的行为不是 mirror 的问题。解决ghcr.io、gcr.io 等仓库要么手动加前缀改写要么在 Podman 里按仓库单独配置 mirror。适用边界与总结这个服务适合的场景国内网络环境下拉取公开镜像覆盖单机开发、团队开发机、Kubernetes 集群的通用加速。它不适合的场景私有镜像仓库的加速它是公开镜像的 Mirror不含私有内容、对同步时效要求极高的发布流程懒加载 1 小时 Manifest 缓存决定了它无法保证秒级一致性、以及白名单之外的任意小仓库需等规则批准。总结public-image-mirror 用白名单 懒加载 哈希一致的机制把海外公开镜像搬到国内节点使用者付出的成本只是改写一个地址前缀或一段守护进程配置。配置前核对白名单、拉取时锁定版本、批量任务放在低峰期这三条能覆盖绝大多数问题。项目源码与白名单持续维护在仓库中规则更新可直接在 allows.txt 中查询。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表