Docker 私有代理

Anye
Anye
发布于 2024-06-07 / 239 阅读
0
0

Docker 私有代理

前言

Anye Docker Proxy 服务的停运

经过深思熟虑和全面的评估,我决定对 Anye Docker Proxy 服务进行停运。以下是关于停运服务的详细信息和相关考虑因素。

停运原因及考虑因素

安全与稳定性考量:鉴于境内网络安全形势的不断变化,即时起我将中止对 Dockerhub 仓库的代理服务。Docker 相关工具默认会自动处理失效镜像的回退,如果对官方源有访问困难问题,建议尝试使用其他仍在服务的镜像源。

作为公益站点的提供者,我深表歉意,Anye Docker Proxy 开站三个月来,已为超 340 多人提供超 1100 镜像下载,这不仅展示了该服务在短时间内获得的广泛认可,也证明了这一服务在帮助用户解决 Docker 镜像下载问题方面的显著成效。

在此,特别感谢以下机构和个人对 Anye Docker Proxy 服务提供的支持与帮助:

首先,感谢 1Panel 提供的服务器面板运维服务。1Panel 的高效、可靠的面板工具,为我们提供了稳定的运维支持,保障了服务的正常运行。

其次,感谢 Oracle 提供的免费服务器。Oracle 的免费服务器为我们的服务提供了坚实的硬件基础,使我们能够在低经济负担的情况下,顺利地开展和运营 Anye Docker Proxy 服务。

此外,感谢 浅时光博客 提供的教程和 Docker Proxy 基于的思路与设计灵感。浅时光博客的内容不仅启发了我们的设计思路,还为我们提供了宝贵的技术指导,使我们能够更好地实现服务的功能。

最后,感谢 404搜索引擎操作员 提供的 Vite 站点构建指南。

尽管 Anye Docker Proxy 服务即将停运,但私有构建方法依然公开,现记录如下

部署文档

部署环境

服务器要求

  • 服务器:已安装 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 为对应的镜像仓库地址:

镜像仓库 配置文件 remoteurl
Docker Hub docker-hub.yml https://registry-1.docker.io
GitHub Container Registry ghcr.yml https://ghcr.io
Google Container Registry gcr.yml https://gcr.io
Google Kubernetes k8s-gcr.yml https://k8s.gcr.io
Quay.io quay.yml https://quay.io
Microsoft Artifact Registry mcr.yml https://mcr.microsoft.com

申请证书

在 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 文档


评论