🐳 Docker Hub 镜像代理 - 自动登录版

支持环境变量配置自动登录,Token 自动缓存,无需手动认证。

配置环境变量

在 Cloudflare Workers 设置中添加以下环境变量:

变量名 说明 示例
DOCKER_USERNAME Docker Hub 用户名 your-username
DOCKER_PASSWORD Docker Hub 密码或 Access Token dckr_pat_xxxxx 或密码

在 Cloudflare Dashboard 配置

  1. 进入你的 Worker 设置页面
  2. 点击 "Settings" → "Variables"
  3. 添加环境变量:
    • Variable name: DOCKER_USERNAME,Value: 你的用户名
    • Variable name: DOCKER_PASSWORD,Value: 你的密码/Token
  4. 勾选 "Encrypt" 保护密码安全
  5. 点击 "Save and Deploy"
✅ 推荐使用 Access Token:

工作原理

  1. 自动登录:检测到没有认证信息时,自动使用环境变量登录 Docker Hub
  2. 获取 Token:登录成功后获取 registry token
  3. 缓存 Token:将 token 保存到 Cloudflare Cache API,有效期 55 分钟
  4. 自动续期:token 过期时自动重新登录获取新 token
💾 缓存机制:

使用方法

方式一:配置 Docker Daemon(推荐)

编辑 /etc/docker/daemon.json

{
  "registry-mirrors": ["https://your-worker.workers.dev"]
}
# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

# 直接拉取镜像(自动使用代理和认证)
docker pull nginx:latest
docker pull mysql:8.0
docker pull your-username/private-image:latest

方式二:直接使用代理域名

# 拉取公开镜像
docker pull your-worker.workers.dev/nginx:latest

# 拉取私有镜像(自动认证)
docker pull your-worker.workers.dev/your-username/private-repo:tag
🎉 无需手动登录!配置环境变量后,代理会自动处理所有认证流程。

功能特性

认证优先级

  1. 客户端 Authorization 头:如果请求包含认证信息,直接使用
  2. 环境变量认证:配置了 DOCKER_USERNAME 和 DOCKER_PASSWORD,自动登录
  3. 匿名访问:未配置环境变量时,使用匿名 token(仅公开镜像)

安全建议

🔒 安全最佳实践:

故障排查

Q: 还是提示 401 未授权?

A: 检查以下项:

Q: 私有镜像无法拉取?

A: 确保:

Q: 如何查看缓存状态?

A: 查看 Worker 实时日志(Cloudflare Dashboard → Workers → Logs):

# 日志示例
Using cached authenticated token for nginx
Authenticated token obtained and cached for mysql
Token cache cleared for redis

性能优化

通过缓存机制,显著提升性能:

💡 提示:如果不配置环境变量,Worker 会自动降级为匿名访问模式,仍可拉取公开镜像。