V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jqknono
V2EX  ›  分享创造

阿里云 ESA 边缘函数转发代理 docker registry

  •  
  •   jqknono · 3 天前 · 698 次点击

    开源地址: https://github.com/jqknono/esa-registry-proxy

    ESA Docker Registry Proxy

    这是一个基于 Alibaba ESA (Edge Security Acceleration) 的 Docker Registry 转发代理,为中国大陆用户提供更快的 Docker 镜像下载服务,并实现镜像白名单功能以增强安全性。

    功能特性

    1. Docker Registry 代理: 转发 Docker Hub 请求,提升中国大陆用户下载速度
    2. 镜像白名单: 限制只能下载指定的镜像,提高安全性
    3. 支持多种匹配模式: 支持精确匹配和前缀匹配
    4. 智能缓存机制: 优先使用缓存数据,减少重复请求,提高响应速度

    快速开始

    前提条件

    • Node.js 16+
    • npm 或 yarn
    • Alibaba ESA 账号及 AccessKey ID 和 Secret

    安装部署

    1. 克隆项目:

      git clone https://github.com/jqknono/esa-registry-proxy
      

    部署到 Alibaba ESA

    方法一:使用 ESA CLI (推荐)

    1. 安装 ESA CLI:

      npm install esa-cli -g
      
    2. 登录 ESA:

      esa login
      
    3. 初始化项目:

      esa init
      
    4. 提交代码:

      esa commit
      
    5. 部署函数:

      esa deploy
      
    6. 绑定域名:

      esa domain add registry.jqknono.com
      

    方法二:手动部署

    请参考 DEPLOYMENT.md 文件获取详细的手动部署说明。

    白名单功能详解

    白名单功能是本项目的核心安全特性,可以限制允许通过代理拉取的 Docker 镜像,防止恶意使用。

    白名单配置格式

    白名单配置为逗号分隔的字符串,每个字符串代表一个允许下载的镜像名称模式:

    WHITELIST=library/nginx,library/redis,library/*
    

    支持的匹配模式

    • 精确匹配: 如 library/nginx,只允许下载完全匹配的镜像
    • 前缀匹配: 如 library/*,允许下载所有 library 组织的镜像

    配置示例

    # 只允许官方 nginx 和 redis 镜像
    WHITELIST=library/nginx,library/redis
    
    # 允许所有官方镜像
    WHITELIST=library/*
    
    # 允许特定组织的所有镜像
    WHITELIST=jqknono/*
    

    使用方式

    直接使用

    docker pull registry.jqknono.com/library/nginx
    

    配置 Docker 客户端

    在 Docker 配置中添加镜像仓库:

    {
      "registry-mirrors": ["https://registry.jqknono.com"]
    }
    

    技术实现

    • 利用 Alibaba ESA 的边缘网络加速镜像拉取
    • 支持 Docker Registry v2 API
    • 实现镜像白名单安全控制
    • 利用 ESA Cache API 实现智能缓存,优先使用缓存数据,缓存时间为服务允许的最大值(一年)

    注意事项

    • 此项目主要用于个人开发环境或小型团队使用
    • 大规模生产环境建议使用专业的镜像仓库服务
    • 请确保您的 Alibaba ESA 账户有足够的配额

    参考

    jqknono
        1
    jqknono  
    OP
       3 天前
    实话实说, 比 cloudflare 慢很多, 不过写都写了, 就发上来给大家玩玩, 研究下 ESA 可以怎么折腾.

    Cloudflare : https://github.com/jqknono/cloudflare-registry-proxy
    阿里云 ESA: https://github.com/jqknono/esa-registry-proxy
    beihanggmj
        2
    beihanggmj  
       2 天前
    good
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1150 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 23:50 · PVG 07:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.