惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
The Cloudflare Blog
IT之家
IT之家
V
V2EX
雷峰网
雷峰网
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
小众软件
小众软件
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
A
About on SuperTechFans
B
Blog
月光博客
月光博客
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI

Anyeの小站

PlayGuard,让你的播放器老实点! Peg - 命令行便签 · 把终端输出钉上布告板 2025 年终总结:折腾不止,热情常青 告别公网暴露风险:mTLS助你构建家里云安全边界 🚀 0 代码部署:Halo 博客与企业门户系统 B站跟随系统深色模式脚本——让你的B站体验更丝滑 【1024抽奖】EdgeOne下线源站防护?这个办法更简单! 全新!Edge 还是卸载不掉?来试试这个! 混元模型玩家必看:CNB API 不限量调用! 1Panel 应用商店如何上架应用 Next Terminal 实战:内网无密码安全登录 用了 EdgeOne 降本增效,源站却可能裸奔? 降本增效!上云真香! 在线重装 Proxmox VE SSL证书申请老出问题?这套组合直接帮你搞定! 🌐 森屿云:让数字化转型像呼吸一样自然 1Panel v2 首发体验(alpha) Vscode/Code-Server 安装中文包——CI/CD DockerHub Mirror 终极解决方案——零成本,速度超快! 本地跑不动 QwQ?快用 CNB,免费运行满血 QwQ! Docker Push 巨慢?Skopeo 来拯救 2024 年终总结:与 17170 位读者相遇的旅程 云厂 200Mbps 小鸡,家里云的希望 Halo 插件 thyuu-embed 主题样式注入模板 Windows 11 卸载 Edge 小破站 6 级萌新前来挑战硬核会员,答题分享 手机系统杂谈 1Panel 自建邮局 - Docker Mailserver 1Panel 推送 SSL 证书到阿里云、腾讯云 整了几个简洁的单页,欢迎来扒
Anye Docker Proxy
Anye · 2024-04-03 · via Anyeの小站

全新 Docker 镜像代理 已上线,更快的速度,更大的带宽,欢迎各位试用。

部署环境

服务器要求

  • 服务器:已安装 1Panel 面板的服务器一台,详细安装方法请参考 1Panel 安装教程

快速安装命令:

RedHat / CentOS

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

Ubuntu / Debian

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
  • 网络环境:服务器需要能够 无阻碍 访问 Docker Hub, GitHub, Google, k8s, Quay, Microsoft 等镜像仓库

  • 域名:域名一个,解析到服务器的公网 IP 地址,DNS 解析包括将要用于代理的子域的记录。

  • 带宽:根据你的业务需求,选择合适的带宽。

  • 硬盘:根据你的业务需求,选择合适的硬盘。

安装 OpenResty

在 1Panel 面板的 应用商店 中安装 OpenResty,用于反向代理代理服务。

部署代理服务

创建容器组

  1. 在 1Panel 面板中,点击 容器 -> 编排 -> 创建编排,填写如下信息:

version: '3'
services:
  # Docker Hub
  docker-hub:
    container_name: mirror-docker-hub
    image: registry:latest
    restart: always
    volumes:
      - ./docker-hub.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:51000:5000
    networks:
      - registry-net
  # GitHub Container Registry
  ghcr:
    container_name: mirror-ghcr
    image: registry:latest
    restart: always 
    volumes:
      - ./ghcr.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:52000:5000
    networks:
      - registry-net
  # Google Container Registry
  gcr:
    container_name: mirror-gcr
    image: registry:latest
    restart: always
    volumes:
      - ./gcr.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:53000:5000
    networks:
      - registry-net
  # Google Kubernetes
  k8s-gcr:
    container_name: mirror-k8s-gcr
    image: registry:latest
    restart: always
    volumes:
      - ./k8s-gcr.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:54000:5000
    networks:
      - registry-net
  # Quay.io
  quay:
    container_name: mirror-quay
    image: registry:latest
    restart: always
    volumes:
      - ./quay.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:55000:5000
    networks:
      - registry-net
  # Microsoft Artifact Registry
  mcr:
    container_name: mirror-mcr
    image: registry:latest
    restart: always
    volumes:
      - ./mcr.yml:/etc/docker/registry/config.yml
      - ./registry:/var/lib/registry
    ports:
      - 127.0.0.1:56000:5000
    networks:
      - registry-net
 
networks:
  registry-net:

这将创建一个容器组,包含了 Docker Hub、GitHub、Google、k8s、Quay、Microsoft 的镜像仓库。

  1. 填写文件夹名称为 docker-mirror,点击 确认,等待容器组创建完成。

创建配置文件

/opt/1panel/docker/compose/docker-mirror 路径中,创建以下配置文件:

$ docker-hub.yml

version: 0.1 
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
proxy:
  remoteurl: https://registry-1.docker.io # Docker Hub 镜像仓库地址
  username:  # (可选)Docker Hub 的用户名
  password:  # (可选)Docker Hub 的密码

ghcr.yml, gcr.yml, k8s-gcr.yml, quay.yml, mcr.yml 配置文件类似,只需修改 proxy.remoteurl 为对应的镜像仓库地址:

申请证书

在 1Panel 面板中,点击 证书,创建 Acme账户DNS 账户,然后点击 申请证书

在这里建议申请 泛域名证书,以便后续使用。

其余各项信息按需填写。

配置反向代理

在 1Panel 面板中,点击 网站 -> 网站 -> 创建网站,分别创建以下网站:

(此处以本站域名为例 anye.in,请替换为你的域名)

模式

主域名

协议

代理地址

备注

反向代理

mirror.anye.in

http

127.0.0.1:51000

Docker Hub

反向代理

ghcr.anye.in

http

127.0.0.1:52000

GitHub Container Registry

反向代理

gcr.anye.in

http

127.0.0.1:53000

Google Container Registry

反向代理

k8s.anye.in

http

127.0.0.1:54000

Google Kubernetes

反向代理

quay.anye.in

http

127.0.0.1:55000

Quay.io

反向代理

mcr.anye.in

http

127.0.0.1:56000

Microsoft Artifact Registry

启用HTTPS

在 1Panel 面板中,为上述反向代理站点配置 HTTPS :

点击 网站 -> 网站 -> 配置,点击 HTTPS,点击 启用 HTTPS,选择 泛域名证书,点击 保存

配置自动清理(可选)

在 1Panel 面板中,点击 计划任务 -> 创建计划任务,填写如下信息:

  • 任务类型:Shell 脚本

  • 任务名称:自动清理 docker 缓存

  • 执行周期:每天

  • 脚本内容rm /opt/1panel/docker/compose/docker-mirror/registry/* -r

部署完成

至此,代理服务部署完成,可以通过自己的子域名访问各个镜像仓库。

进阶配置

通过修改配置文件,可以对代理服务进行进一步的配置,比如认证、存储、缓存等。

详情请参考 Distribution Registry 文档