一、环境准备与前置条件
Harbor作为企业级Docker镜像仓库,对运行环境有明确要求。在CentOS系统上部署前,需确保满足以下条件:
1.1 系统版本要求
Harbor官方推荐使用CentOS 7/8 LTS版本,本文以CentOS 7.9为例。需确认系统已更新至最新补丁:
sudo yum update -ysudo reboot
1.2 依赖组件安装
Harbor依赖Docker和Docker Compose运行。首先安装Docker CE:
# 卸载旧版本sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 安装依赖sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加Docker仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装Docker CEsudo yum install -y docker-ce docker-ce-cli containerd.io# 启动服务sudo systemctl enable dockersudo systemctl start docker
安装Docker Compose(需1.18.0+版本):
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
1.3 硬件资源规划
建议配置:
- CPU:4核以上
- 内存:8GB以上(生产环境建议16GB+)
- 磁盘:200GB以上(根据镜像存储需求调整)
- 网络:千兆网卡
二、Harbor安装与配置
2.1 下载安装包
从Harbor官方GitHub Release页面下载最新稳定版(以v2.4.3为例):
wget https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgztar xvf harbor-offline-installer-v2.4.3.tgzcd harbor
2.2 配置文件修改
编辑harbor.yml配置文件,关键配置项说明:
# 主机名配置(必须为FQDN或IP)hostname: registry.example.com# HTTP/HTTPS配置https:certificate: /data/cert/server.crtprivate_key: /data/cert/server.key# 存储驱动配置(支持filesystem/s3/azure等)storage_driver:name: filesystemsettings:rootdirectory: /data# 数据库配置(默认使用内置PostgreSQL)database:password: root123max_idle_conns: 50max_open_conns: 100# 认证模式(支持db_auth/ldap_auth/oauth_auth)auth_mode: db_auth
2.3 安装执行
执行安装脚本前,确保已配置好域名解析(或本地hosts文件):
echo "192.168.1.100 registry.example.com" >> /etc/hosts
运行安装命令:
sudo ./install.sh --with-clair --with-trivy # 可选添加漏洞扫描组件
安装完成后验证服务状态:
docker-compose ps
三、安全加固最佳实践
3.1 HTTPS配置
生成自签名证书(生产环境建议使用CA签发证书):
mkdir -p /data/certopenssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /data/cert/server.key -out /data/cert/server.crt \-subj "/C=CN/ST=Beijing/L=Beijing/O=IT/CN=registry.example.com"
修改harbor.yml启用HTTPS后,重启服务:
docker-compose downdocker-compose up -d
3.2 访问控制
创建项目并设置权限:
# 登录Harbordocker login registry.example.com# 创建项目(示例)curl -u admin:Harbor12345 \-X POST -H "Content-Type: application/json" \--data '{"project_name": "production", "public": false}' \https://registry.example.com/api/v2.0/projects
3.3 审计日志
配置日志轮转:
# 编辑日志配置文件vi /etc/logrotate.d/harbor# 添加如下内容/var/log/harbor/*.log {dailyrotate 7compressdelaycompressmissingoknotifemptycopytruncate}
四、运维管理指南
4.1 日常维护
- 备份策略:
```bash
备份数据库
docker exec -it harbor-db pgdump -U postgres -d registry > /backup/registry$(date +%Y%m%d).sql
备份配置
cp -r /data/config /backup/config_$(date +%Y%m%d)
- **升级流程**:```bash# 1. 下载新版本# 2. 备份当前数据# 3. 执行升级命令cd harbor./prepare --with-clair --with-trivydocker-compose downdocker-compose up -d
4.2 性能优化
-
存储优化:
- 启用存储驱动压缩
- 配置定期清理未使用的镜像
- 使用对象存储(如S3)作为后端
-
网络优化:
- 配置Nginx反向代理缓存
- 启用HTTP/2协议
4.3 故障排查
常见问题处理:
-
502 Bad Gateway:
- 检查Nginx容器日志
- 验证后端服务状态
-
镜像推送失败:
- 检查磁盘空间
- 验证认证信息
- 查看Harbor核心日志
-
数据库连接失败:
- 检查PostgreSQL容器状态
- 验证数据库配置参数
五、企业级部署建议
-
高可用架构:
- 使用Keepalived+VIP实现域名漂移
- 数据库主从复制
- 对象存储多AZ部署
-
监控方案:
- 集成Prometheus+Grafana监控
- 配置告警规则(磁盘空间、响应时间等)
-
CI/CD集成:
- Jenkins流水线配置示例:
pipeline {agent anystages {stage('Build') {steps {sh 'docker build -t registry.example.com/production/app:$BUILD_NUMBER .'}}stage('Push') {steps {withCredentials([usernamePassword(credentialsId: 'harbor-cred', passwordVariable: 'PASS', usernameVariable: 'USER')]) {sh "docker login registry.example.com -u $USER -p $PASS"sh "docker push registry.example.com/production/app:$BUILD_NUMBER"}}}}}
- Jenkins流水线配置示例:
通过以上系统化的部署方案,开发者可以在CentOS环境下快速构建安全、高效的Harbor镜像仓库,满足企业级容器镜像管理的需求。实际部署时,建议先在测试环境验证配置,再逐步推广到生产环境。