一、Harbor镜像仓库概述
Harbor是由VMware公司开源的企业级Docker Registry项目,提供镜像存储、访问控制、镜像签名、漏洞扫描等核心功能。相较于原生Docker Registry,Harbor通过添加RBAC权限管理、镜像复制、审计日志等企业级特性,成为云原生架构中容器镜像管理的标准解决方案。其核心优势体现在三个方面:安全性(支持HTTPS、镜像签名、漏洞扫描)、可扩展性(支持多节点集群部署)、易用性(提供Web管理界面和REST API)。
二、环境准备与前置条件
1. 硬件资源要求
生产环境建议配置:4核CPU、8GB内存、100GB存储空间(SSD优先)。测试环境可适当降低配置,但需保证至少2核CPU和4GB内存以避免性能瓶颈。存储空间需根据镜像数量动态扩展,建议采用LVM或分布式存储方案。
2. 软件依赖检查
- 操作系统:CentOS 7/8或Ubuntu 18.04/20.04 LTS
- Docker版本:≥19.03(推荐使用静态二进制包安装)
- Docker Compose:≥1.25.0(用于单节点部署)
- 依赖包:
curl wget git(基础工具链)
3. 网络配置要点
需配置固定IP地址,确保80(HTTP)、443(HTTPS)、4222(Notary服务)端口可用。若使用反向代理(如Nginx),需配置WebSocket支持以实现Web终端功能。建议划分VLAN隔离管理网络,防止未授权访问。
三、Harbor安装部署流程
1. 离线安装包获取
从GitHub Release页面下载对应版本的离线包(如harbor-offline-installer-v2.5.0.tgz)。验证SHA256校验和:
sha256sum harbor-offline-installer-v2.5.0.tgz
2. 配置文件定制化
解压后编辑harbor.yml.tmpl,重点配置项:
hostname: registry.example.com # 必须为FQDNhttp:port: 80https:certificate: /data/cert/server.crtprivate_key: /data/cert/server.keyharbor_admin_password: Harbor12345 # 初始密码database:password: root123max_open_conns: 100max_idle_conns: 50
3. 安装脚本执行
执行安装前需确保Docker服务已启动:
systemctl start docker./install.sh --with-trivy --with-chartmuseum # 包含漏洞扫描和Helm Chart支持
安装日志会显示服务启动状态,正常结束应显示✔ ----Harbor has been installed and started successfully.----。
四、核心功能配置指南
1. 项目与用户管理
通过Web界面创建项目时,可配置:
- 存储配额(如50GB)
- 镜像自动清理策略(保留最近3个版本)
- 成员角色分配(开发者仅限推送,审计员仅限拉取)
2. 复制策略实施
配置跨集群镜像同步示例:
# 在目标Harbor的System Administration > Replications页面添加{"name": "prod-to-dev","src_registry": {"url": "https://prod-registry.example.com","insecure": false},"dest_registry": {"url": "https://dev-registry.example.com","insecure": false},"trigger": {"type": "manual", # 或"schedule"定时同步"schedule_param": {"cron": "0 0 * * *"}},"filters": [{"type": "name", "value": "**/release-*"}]}
3. 漏洞扫描配置
启用Trivy扫描需在harbor.yml中配置:
trivy:ignore_unfixed: falseskip_update: falseinsecure: falseseverity: "CRITICAL,HIGH" # 只报告高危漏洞
扫描结果通过Web界面展示,支持按CVE编号、组件名称过滤。
五、运维与故障排查
1. 日常维护操作
- 日志轮转:配置
/etc/logrotate.d/harbor,按日期分割日志 - 数据库备份:每日执行
pg_dump -U postgres -h 127.0.0.1 registry > backup.sql - 存储清理:运行
python /opt/harbor/scripts/cleanup.py --days 30删除过期镜像
2. 常见问题处理
问题1:502 Bad Gateway错误
解决方案:检查Nginx配置中proxy_pass地址是否正确,确认Harbor核心服务是否运行:
docker-compose ps
问题2:镜像推送超时
解决方案:调整/etc/docker/daemon.json中的max-concurrent-uploads参数:
{"max-concurrent-uploads": 10}
六、企业级部署建议
- 高可用架构:采用主从模式部署,通过Keepalived实现VIP切换
- 镜像签名:配置Notary服务实现内容可信,示例签名流程:
# 生成签名密钥notary init --server https://registry.example.com myreponotary sign myrepo:latest --key /root/.notary/myrepo_key.pem
- 监控集成:通过Prometheus采集Harbor指标,配置告警规则:
```yaml
- alert: HarborDiskUsage
expr: (1 - (node_filesystem_avail_bytes{fstype=”xfs”} / node_filesystem_size_bytes{fstype=”xfs”})) * 100 > 85
for: 10m
labels:
severity: warning
```
七、升级与迁移指南
升级前需执行:
- 备份数据库和配置文件
- 停止所有服务:
docker-compose down - 下载新版本安装包并解压
- 运行升级脚本:
./upgrade.sh --insecure(测试环境)
迁移数据步骤:
# 导出数据docker run -it --rm -v /var/lib/registry:/var/lib/registry \-v /data/harbor_db:/var/lib/postgresql/data \vmware/harbor-db-migrator:v2.5.0 export# 导入到新实例docker run -it --rm -v /new_path/registry:/var/lib/registry \-v /new_path/harbor_db:/var/lib/postgresql/data \vmware/harbor-db-migrator:v2.5.0 import
通过以上系统化部署方案,开发者可快速构建满足企业级需求的容器镜像仓库。实际部署中需根据具体环境调整参数,建议先在测试环境验证配置后再迁移到生产环境。