一、Harbor简介与安装背景
Harbor是由VMware公司开源的企业级Docker镜像仓库管理工具,提供镜像存储、权限控制、镜像签名、漏洞扫描等核心功能。相较于开源的Docker Registry,Harbor通过添加RBAC权限模型、审计日志、复制策略等企业级特性,成为CI/CD流水线中不可或缺的组件。本文记录的安装环境为CentOS 7.9系统,采用离线安装方式规避网络波动风险,目标构建支持HTTPS协议的高可用镜像仓库。
二、安装前环境准备
1. 硬件资源要求
官方推荐配置为4核CPU、8GB内存、100GB存储空间。实际测试表明,在中小规模场景下(50人以下开发团队),2核4GB内存的虚拟机可稳定运行,但需限制同时上传镜像的并发数。存储空间建议采用LVM逻辑卷管理,便于后期扩容。
2. 软件依赖安装
# 安装Docker CE(CentOS 7示例)sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.io# 安装Docker Compose(1.29+版本)sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
3. 网络配置要点
- 防火墙开放443(HTTPS)、80(HTTP重定向)、4443(Notary服务,可选)端口
- SELinux需设置为permissive模式或配置安全策略
- 推荐使用Nginx反向代理实现负载均衡,示例配置如下:
```nginx
upstream harbor {
server harbor-core:8443;
server harbor-core-backup:8443;
}
server {
listen 443 ssl;
server_name registry.example.com;
ssl_certificate /etc/nginx/certs/registry.crt;
ssl_certificate_key /etc/nginx/certs/registry.key;
location / {proxy_pass https://harbor;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
# 三、Harbor安装实施## 1. 离线安装包准备从GitHub Release页面下载Harbor Offline Installer包(当前最新稳定版为v2.9.0),包含:- 预编译的Docker镜像- 配置模板文件- 安装脚本## 2. 配置文件定制修改`harbor.yml.tmpl`模板文件关键参数:```yamlhostname: registry.example.comhttps:certificate: /data/cert/registry.crtprivate_key: /data/cert/registry.keyharbor_admin_password: StrongPassword123!database:password: rootpasswordmax_open_conns: 100max_idle_conns: 50storage_driver:name: filesystemfilesystem:rootdirectory: /data/registry
参数说明:
max_open_conns:数据库连接池最大连接数,建议设置为CPU核心数的2倍rootdirectory:存储镜像的物理路径,需确保磁盘I/O性能
3. 安装执行流程
# 解压安装包tar xvf harbor-offline-installer-v2.9.0.tgzcd harbor# 生成自定义配置cp harbor.yml.tmpl harbor.ymlvim harbor.yml # 按需修改# 执行安装sudo ./install.sh --with-trivy # 包含漏洞扫描组件
安装过程会自动完成以下操作:
- 创建Docker网络
harbor - 启动核心服务容器(core、db、jobservice、registry、portal)
- 初始化数据库表结构
- 配置Nginx代理
四、安装后验证与优化
1. 功能验证
# 登录测试docker login registry.example.com# 推送镜像测试docker tag nginx:latest registry.example.com/library/nginx:v1docker push registry.example.com/library/nginx:v1
2. 性能调优建议
- 数据库优化:修改PostgreSQL配置文件
/var/lib/postgresql/data/postgresql.conf,调整:shared_buffers = 256MB # 物理内存的25%work_mem = 4MB # 每个查询操作的工作内存maintenance_work_mem = 64MB
- 镜像清理策略:配置
garbage collection策略,示例Cron任务:0 3 * * * /usr/bin/docker run -it --rm --name gc \-e HARBOR_ADMIN_PASSWORD=xxx \-v /var/run/docker.sock:/var/run/docker.sock \goharbor/harbor-gc:v2.9.0
3. 高可用方案
- 主从复制:配置多个Harbor实例间的项目复制规则
- 对象存储集成:支持AWS S3、MinIO等后端存储,配置示例:
storage_driver:name: s3s3:accesskey: xxxsecretkey: xxxregion: us-west-1bucket: harbor-registryregionendpoint: http://minio.example.com
五、常见问题解决方案
1. 证书问题处理
当出现x509: certificate signed by unknown authority错误时,需将CA证书添加到Docker信任链:
# 创建或修改Docker证书目录sudo mkdir -p /etc/docker/certs.d/registry.example.comsudo cp registry.crt /etc/docker/certs.d/registry.example.com/ca.crtsudo systemctl restart docker
2. 数据库连接失败
检查PostgreSQL容器日志,常见原因包括:
- 磁盘空间不足:
df -h检查存储使用情况 - 连接数耗尽:调整
max_connections参数 - 权限问题:确保
harbor用户有数据库操作权限
3. 性能瓶颈分析
使用docker stats监控容器资源使用,结合nmon工具分析系统级性能指标。对于I/O密集型场景,建议:
- 将存储目录挂载到SSD磁盘
- 调整Registry容器的
--storage-driver参数 - 启用Registry的缓存机制
六、运维建议
- 备份策略:每日自动备份数据库(
pg_dump)和配置文件 - 监控告警:集成Prometheus+Grafana监控镜像数量、存储使用率、API响应时间等指标
- 升级路径:遵循小版本迭代升级原则,每次升级前执行
./prepare脚本验证环境兼容性
通过本文记录的完整安装流程,读者可构建出满足企业级需求的镜像仓库。实际部署中需根据具体业务场景调整参数配置,建议先在测试环境验证后再迁移到生产环境。Harbor的模块化设计使得后续功能扩展(如添加CI/CD集成、实现多集群同步)变得简单高效,为容器化应用交付提供可靠的基础设施支持。