如何搭建 Docker 镜像加速站

以下是搭建 Docker 镜像加速站的详细方案,涵盖轻量级到企业级的多种方法:


一、核心方案及步骤

1. 使用 Nginx 反向代理 + 缓存(轻量级方案)

  • 原理:通过 Nginx 缓存 Docker Hub 的镜像层,实现重复请求加速。
  • 步骤
    1. 安装 Nginx
      sudo apt update && sudo apt install nginx -y
    2. 配置缓存路径
      sudo mkdir -p /var/cache/nginx/docker
      sudo chown -R www-data:www-data /var/cache/nginx/docker
    3. 配置 Nginx(/etc/nginx/conf.d/docker-mirror.conf
      proxy_cache_path /var/cache/nginx/docker levels=1:2 keys_zone=docker_cache:10m max_size=10g inactive=60d;
      
      server {
       listen 80;
       server_name mirror.yourdomain.com;
      
       # 强制HTTPS(可选)
       return 301 https://$host$request_uri;
      }
      
      server {
       listen 443 ssl;
       server_name mirror.yourdomain.com;
      
       ssl_certificate /etc/letsencrypt/live/mirror.yourdomain.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/mirror.ydomain.com/privkey.pem;
      
       location /v2/ {
           proxy_pass https://registry-1.docker.io;
           proxy_set_header Host registry-1.docker.io;
           proxy_set_header X-Real-IP $remote_addr;
      
           # 启用缓存
           proxy_cache docker_cache;
           proxy_cache_valid 200 302 30d;
           proxy_cache_use_stale error timeout updating;
           proxy_cache_lock on;
       }
      }
    4. 申请 SSL 证书
      sudo certbot --nginx -d mirror.yourdomain.com
    5. 重启 Nginx
      sudo systemctl restart nginx

2. 使用 Docker Registry 镜像模式(官方方案)

  • 原理:配置 Docker Registry 作为代理缓存镜像。
  • 步骤
    1. 创建配置文件(config.yml
      version: 0.1
      proxy:
      remoteurl: https://registry-1.docker.io
      storage:
      filesystem:
       rootdirectory: /var/lib/registry
      cache:
       blobdescriptor: inmemory
      http:
      addr: :5000
    2. 启动 Registry 容器
      docker run -d 
      -p 5000:5000 
      -v /data/registry:/var/lib/registry 
      -v /path/to/config.yml:/etc/docker/registry/config.yml 
      --name docker-mirror 
      registry:2
    3. 客户端配置(/etc/docker/daemon.json
      {
      "registry-mirrors": ["http://mirror.yourdomain.com:5000"]
      }
    4. 重启 Docker 服务
      sudo systemctl restart docker

3. 使用 Harbor 企业级镜像仓库(高级方案)

  • 适用场景:企业私有镜像管理 + 缓存加速。
  • 步骤
    1. 安装 Harbor
      wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz
      tar xvf harbor-offline-installer-v2.8.0.tgz
      cd harbor
      cp harbor.yml.tmpl harbor.yml
    2. 修改配置(harbor.yml
      hostname: mirror.yourdomain.com
      http:
      port: 80
      https:
      port: 443
      certificate: /etc/letsencrypt/live/mirror.yourdomain.com/fullchain.pem
      private_key: /etc/letsencrypt/live/mirror.yourdomain.com/privkey.pem
      proxy:
      providers:
       dockerhub:
         endpoint: https://registry-1.docker.io
    3. 启动 Harbor
      sudo ./install.sh
    4. 登录并创建代理项目
      • 在 Harbor 控制台创建项目,选择「代理缓存」模式,指向 Docker Hub。

二、客户端配置验证

  • 测试镜像拉取
    docker pull nginx:alpine --registry-mirror=http://mirror.yourdomain.com
  • 查看缓存命中
    • Nginx 方案:检查 /var/cache/nginx/docker 目录大小变化。
    • Registry 方案:查看容器日志 docker logs docker-mirror

三、注意事项

  1. 存储空间
    • 定期清理旧镜像(如 docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml)。
    • 建议分配 100GB+ 存储空间。
  2. 访问控制
    • 使用 Nginx Basic Auth 或 Harbor 的 RBAC 限制访问。
  3. 网络优化
    • 国内服务器建议选择海外线路优质的节点(如香港)作为代理源。
  4. 备份策略
    • 对缓存目录 (/var/lib/registry) 定期备份。

四、方案对比

方案 优点 缺点 适用场景
Nginx 反向代理 轻量级,配置灵活 需手动管理缓存 个人/小团队临时加速
Docker Registry 代理 官方支持,稳定性高 功能单一 中小规模生产环境
Harbor 企业级功能(审计、权限管理) 部署复杂,资源占用高 大型团队或企业私有云

五、替代方案

如果自建成本过高,可直接使用以下公共镜像加速器(需替换 <url>):

  • 阿里云https://<你的ID>.mirror.aliyuncs.com
  • 腾讯云https://mirror.ccs.tencentyun.com
  • 中科大https://docker.mirrors.ustc.edu.cn

六、使用GitHub项目

项目地址:https://github.com/dqzboy/Docker-Proxy

准备工作

重要:选择一台国外服务器,并且未被墙。对于域名,无需进行国内备案。你也可以通过一些平台申请免费域名。在一键部署过程中,如果选择安装Caddy,它将自动配置HTTPS。若选择部署Nginx服务,则需要自行申请一个免费的SSL证书,或者通过其他方式来实现SSL加密。

免费域名证书申请

方式一: Acme.sh自动生成和续订Lets Encrypt免费SSL证书

方式二: 域名托管到Cloudflare 开启免费SSL证书

方式三: 可通过第三方平台,申请免费的域名证书(免费一般都为DV证书),适用于个人网站、博客和小型项目

功能

  • 一键部署Docker镜像代理服务的功能,支持基于官方Docker Registry的镜像代理.
  •  支持多个镜像仓库的代理,包括Docker Hub、GitHub Container Registry(ghcr.io)、Quay Container Registry(quay.io)、Kubernetes Container Registry(k8s.gcr.io)、Microsoft Container(mcr.microsoft.com)、Elastic Stack(docker.elastic.co)
  •  自动检查并安装所需的依赖软件,如Docker\Compose、Nginx\Caddy等,并确保系统环境满足运行要求
  •  根据你所选择部署的WEB反代服务,自动渲染对应的Nginx或Caddy服务配置
  •  支持配置账号密码登入Docker Hub,可访问 Docker Hub 上的私有镜像同时解决Docker Hub的下载频率限制 配置参考
  •  支持自定义配置代理缓存时间(PROXY_TTL)、支持配置IP黑白名单,防止恶意攻击行为
  •  提供了服务管理、配置管理、服务卸载、认证授权等功能,方便用户进行日常管理和维护
  •  支持一键配置本机Docker代理和容器服务代理(HTTP_PROXY),仅支持http
  •  支持国内服务器一键部署,解决国内环境无法安装Docker\Compose服务难题
  •  支持主流Linux发行版操作系统,例如Centos、Ubuntu、Rocky、Debian、Rhel等,支持主流ARCH架构下部署,包括linux/amd64、linux/arm64
  •  HubCMD-UI服务,面板展示、镜像搜索、文档教程、容器管理、容器监控、网络测试、用户中心等功能

部署

通过项目脚本部署

# CentOS && RHEL && Rocky
yum -y install curl
# ubuntu && debian
apt -y install curl

# 国外环境
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"

# 国内环境cdn加速地址
bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/dqzboy/Docker-Proxy/install/DockerProxy_Install.sh)"

# 国内Github代理地址
bash -c "$(curl -fsSL https://ghp.ci/https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"
  • Hubcmd-UI 面板,通过脚本安装。Demo 查看 模拟环境,请实际部署后体验完整功能!
执行上面脚本,选项为:2 ---> 8 ---> 1

通过以上方案,您可以根据需求选择合适的方式搭建 Docker 镜像加速站,显著提升镜像拉取速度。

THE END
分享
二维码
< <上一篇
下一篇>>