# 用Docker镜像仓库Harbor部署私有Mirror服务
## 前言
在云原生时代,容器技术已成为应用交付的标准方式。作为容器技术的核心组件,Docker镜像的高效管理和分发直接影响着企业的研发效率。当团队规模扩大或对安全性要求提高时,公共镜像仓库(如Docker Hub)往往无法满足需求:下载限速、安全审查缺失、网络隔离等问题逐渐显现。此时,搭建私有镜像仓库服务成为必选项。
VMware开源的Harbor是目前最成熟的企业级Docker Registry解决方案,不仅提供镜像存储功能,还集成漏洞扫描、权限管理、镜像复制等高级特性。本文将详细讲解如何利用Harbor构建私有镜像仓库,并配置为公共仓库的Mirror服务。
---
## 第一章 Harbor核心架构解析
### 1.1 组件构成
Harbor采用模块化设计,主要包含以下核心组件:
- **Core Service**:处理用户请求的核心逻辑层
- **Registry**:实际存储Docker镜像的底层服务
- **Database**:PostgreSQL存储用户权限、审计日志等元数据
- **Redis**:缓存会话和临时数据
- **Job Service**:执行镜像复制、垃圾清理等异步任务
- **Portal**:提供Web管理界面
- **Notary**:镜像签名验证服务(可选)
- **Trivy/Clair**:漏洞扫描器(可选)
### 1.2 典型部署模式

生产环境推荐采用高可用部署:
- 前端通过Nginx/HAProxy实现负载均衡
- 数据库采用PostgreSQL集群
- 存储后端使用云存储或分布式文件系统
---
## 第二章 单机版Harbor部署实践
### 2.1 环境准备
**硬件要求**:
- 最小配置:2核CPU/4GB内存/40GB磁盘
- 生产建议:4核CPU/8GB内存/500GB+磁盘(依据镜像量调整)
**软件依赖**:
- Docker 20.10+
- Docker Compose 2.0+
- 开放端口:80(HTTP)、443(HTTPS)、4443(Notary)
```bash
# 示例:在Ubuntu 22.04上安装依赖
sudo apt update && sudo apt install -y docker.io docker-compose
wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
tar xvf harbor-offline-installer-v2.7.0.tgz
cd harbor
harbor.yml
:hostname: registry.yourcompany.com
http:
port: 80
https:
port: 443
certificate: /data/certs/yourdomain.crt
private_key: /data/certs/yourdomain.key
data_volume: /data/harbor
sudo ./install.sh
# 检查容器状态
docker compose ps
# 测试API接口
curl -X GET http://localhost/api/v2.0/systeminfo
当配置Mirror后: 1. 客户端请求镜像时首先查询Mirror 2. Mirror本地存在则直接返回 3. 不存在时从上游仓库拉取并缓存
创建目标项目(如library
)
配置复制策略:
library/*
)启用代理缓存(Harbor 2.1+):
proxy:
remoteurl: https://registry-1.docker.io
username: your_dockerhub_user
password: your_dockerhub_token
修改/etc/docker/daemon.json
:
{
"registry-mirrors": ["https://registry.yourcompany.com"]
}
重启Docker服务:
sudo systemctl restart docker
垃圾回收:
# 进入Harbor容器执行
docker compose exec registry registry garbage-collect /etc/registry/config.yml
存储迁移:
1. 停止Harbor服务
2. 备份/data
目录
3. 在新服务器恢复数据
Prometheus监控指标示例:
- job_name: 'harbor'
metrics_path: '/metrics'
static_configs:
- targets: ['harbor-core:8080']
关键监控项:
- harbor_registry_storage_used_bytes
- harbor_http_request_duration_seconds
配置自动扫描策略:
# 创建扫描规则
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"high-severity","severity":"High"}' \
http://localhost/api/v2.0/scanners/1/registries/1/scanAll
设置阻断规则(CVE评分>7.0禁止部署)
关键审计事件: - 镜像推送/删除 - 用户权限变更 - 扫描任务执行
问题1:Error: No such image
- 检查镜像标签是否存在
- 验证复制任务是否成功
问题2:x509: certificate signed by unknown authority
- 将CA证书放入/etc/docker/certs.d/registry.yourcompany.com
关键日志路径:
- Registry日志:/var/log/harbor/registry.log
- Core日志:/var/log/harbor/core.log
通过Harbor搭建私有Mirror服务,企业不仅能获得更快的镜像下载速度,还能实现: - 完全掌控镜像供应链 - 满足合规审计要求 - 降低公网带宽成本
随着Harbor 3.0即将支持ORAS Artifact等新特性,其作为云原生制品仓库的地位将进一步巩固。建议生产环境配合Kubernetes的ImagePullSecret功能实现端到端安全管控。
延伸阅读: - Harbor官方文档 - Docker Registry V2协议 - OCI Distribution Spec “`
注:本文实际约4500字(含代码块),可根据需要调整以下部分扩展: 1. 增加具体性能测试数据 2. 补充与其他方案(Nexus、JFrog)的对比 3. 添加Kubernetes集成案例 4. 详细解释证书生成过程
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/vmwareharbor/blog/667088