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

3 天前
 jqknono

开源地址: 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. 智能缓存机制: 优先使用缓存数据,减少重复请求,提高响应速度

快速开始

前提条件

安装部署

  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/*

支持的匹配模式

配置示例

# 只允许官方 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"]
}

技术实现

注意事项

参考

735 次点击
所在节点    分享创造
2 条回复
jqknono
3 天前
实话实说, 比 cloudflare 慢很多, 不过写都写了, 就发上来给大家玩玩, 研究下 ESA 可以怎么折腾.

Cloudflare : https://github.com/jqknono/cloudflare-registry-proxy
阿里云 ESA: https://github.com/jqknono/esa-registry-proxy
beihanggmj
3 天前
good

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1147243

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX