Skip to content

jqknono/esa-registry-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESA Docker Registry Proxy

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

注意

ESA 毕竟是阿里云的产品, 对被当作梯子用非常敏感.

2025-06-30 更新

经过实测, 三种区域设置"全球(不含中国), 全球(含中国), 中国"中, 仅设置区域为"全球(不含中国)", 才能使本项目正常运行. 只要区域设置中包含中国, ESA 就不能顺利转发海外流量. 边缘函数设置成功转发后, 速度较慢, 勉强能用.

2025-08-22 更新

阿里云国际版禁用了全球(不含中国), 仅能设置"全球(不含中国), 全球(含中国)", 目前实测中转代理到国内几乎不能用了.

功能特性

  1. Docker Registry 代理: 转发 Docker Hub 请求,提升中国大陆用户下载速度
  2. 镜像白名单: 限制只能下载指定的镜像,提高安全性
  3. 支持多种匹配模式: 支持精确匹配和前缀匹配
  4. 支持缓存机制: 默认未使用缓存数据,按需开启

快速开始

方式一: 手动部署到 Alibaba ESA

演示

  • 登录阿里云国际版 ESA 控制台
  • 进入边缘函数(EdgeRoutine)管理页面
  • 点击"创建函数"
  • 填写以下信息:
    • 函数名称: esa-registry-proxy
    • 描述: Docker Registry Proxy using Alibaba ESA
  • 上传代码:
    • 修改 src/index.js 中 DEFAULT_WHITELIST 变量
    • 粘贴 src/index.js 的内容到边缘函数代码
  • 部署函数
  • 绑定自定义域名或路由

注意

默认已开启镜像白名单, 只能下载以下镜像, 使用者需要自行调整.

// 默认白名单
const DEFAULT_WHITELIST = [
  "library/nginx",
  "jqknono/weread-challenge",
  "nullprivate/nullprivate",
];

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

白名单功能

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

白名单配置格式

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

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

支持的匹配模式

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

配置示例

# 只允许官方nginx和redis镜像
WHITELIST=library/nginx,library/redis

# 允许所有官方镜像
WHITELIST=library/*

# 允许特定组织的所有镜像
WHITELIST=jqknono/*

使用方式

直接使用

docker pull registry.jqknono.com/library/nginx:latest

配置 Docker 客户端

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

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

技术实现

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

注意事项

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

参考

About

支持白名单的Docker镜像代理, 使用阿里云ESA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published