如何搭建 Docker 镜像加速站
以下是搭建 Docker 镜像加速站的详细方案,涵盖轻量级到企业级的多种方法:
一、核心方案及步骤
1. 使用 Nginx 反向代理 + 缓存(轻量级方案)
- 原理:通过 Nginx 缓存 Docker Hub 的镜像层,实现重复请求加速。
- 步骤:
- 安装 Nginx:
sudo apt update && sudo apt install nginx -y
- 配置缓存路径:
sudo mkdir -p /var/cache/nginx/docker sudo chown -R www-data:www-data /var/cache/nginx/docker
- 配置 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; } }
- 申请 SSL 证书:
sudo certbot --nginx -d mirror.yourdomain.com
- 重启 Nginx:
sudo systemctl restart nginx
- 安装 Nginx:
2. 使用 Docker Registry 镜像模式(官方方案)
- 原理:配置 Docker Registry 作为代理缓存镜像。
- 步骤:
- 创建配置文件(
config.yml
):version: 0.1 proxy: remoteurl: https://registry-1.docker.io storage: filesystem: rootdirectory: /var/lib/registry cache: blobdescriptor: inmemory http: addr: :5000
- 启动 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
- 客户端配置(
/etc/docker/daemon.json
):{ "registry-mirrors": ["http://mirror.yourdomain.com:5000"] }
- 重启 Docker 服务:
sudo systemctl restart docker
- 创建配置文件(
3. 使用 Harbor 企业级镜像仓库(高级方案)
- 适用场景:企业私有镜像管理 + 缓存加速。
- 步骤:
- 安装 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
- 修改配置(
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
- 启动 Harbor:
sudo ./install.sh
- 登录并创建代理项目:
- 在 Harbor 控制台创建项目,选择「代理缓存」模式,指向 Docker Hub。
- 安装 Harbor:
二、客户端配置验证
- 测试镜像拉取:
docker pull nginx:alpine --registry-mirror=http://mirror.yourdomain.com
- 查看缓存命中:
- Nginx 方案:检查
/var/cache/nginx/docker
目录大小变化。 - Registry 方案:查看容器日志
docker logs docker-mirror
。
- Nginx 方案:检查
三、注意事项
- 存储空间:
- 定期清理旧镜像(如
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
)。 - 建议分配 100GB+ 存储空间。
- 定期清理旧镜像(如
- 访问控制:
- 使用 Nginx Basic Auth 或 Harbor 的 RBAC 限制访问。
- 网络优化:
- 国内服务器建议选择海外线路优质的节点(如香港)作为代理源。
- 备份策略:
- 对缓存目录 (
/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 镜像加速站,显著提升镜像拉取速度。