在CentOS 7上安装部署Harbor镜像仓库
一、Harbor镜像仓库概述
Harbor是由VMware开源的企业级Docker Registry管理工具,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等企业级功能。相较于原生Docker Registry,Harbor通过Web界面、API接口和CLI工具实现镜像的集中化管理,尤其适合需要多项目隔离、权限控制的团队使用。
在DevOps实践中,Harbor可作为CI/CD流水线的镜像存储中心,与Jenkins、GitLab等工具深度集成。其支持的镜像签名功能可确保镜像来源可信,而自动清理策略能有效控制存储空间占用。
二、环境准备与前置条件
2.1 系统要求
- 操作系统:CentOS 7.6+(推荐最小化安装)
- 硬件配置:2核CPU、4GB内存、40GB磁盘空间(生产环境建议8核16GB+)
- 网络要求:开放80(HTTP)、443(HTTPS)、22(SSH)端口
2.2 依赖安装
# 安装基础工具yum install -y wget curl epel-release# 安装Docker CE(需先配置YUM源)sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker并设置开机自启systemctl enable --now docker# 安装Docker Compose(需Python环境)curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
2.3 防火墙配置
firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload
三、Harbor安装部署流程
3.1 下载安装包
wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgztar xzf harbor-offline-installer-v2.9.0.tgz -C /opt/cd /opt/harbor
3.2 配置修改
编辑harbor.yml配置文件,关键参数说明:
hostname: harbor.example.com # 需配置DNS解析或hosts文件http:port: 80https:certificate: /data/cert/server.crt # 需提前准备证书private_key: /data/cert/server.keyharbor_admin_password: Harbor12345 # 默认管理员密码database:password: root123 # 数据库密码data_volume: /data # 数据存储目录
3.3 证书配置(HTTPS场景)
mkdir -p /data/certopenssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /data/cert/server.key -out /data/cert/server.crt \-subj "/CN=harbor.example.com"
3.4 安装执行
./prepare # 生成配置文件./install.sh # 启动安装
安装完成后,可通过docker-compose ps验证服务状态:
Name Command State Ports---------------------------------------------------------------------------------------------------harbor-core "/harbor/entrypoint.sh" Upharbor-db "docker-entrypoint.sh mysqld" Upharbor-jobservice "/harbor/entrypoint.sh" Upharbor-log "/bin/sh -c /usr/local/bin/ ..." Up 127.0.0.1:1514->10514/tcpharbor-portal "nginx -g daemon off;" Upnginx "nginx -g daemon off;" Up 0.0.0.0:80->8080/tcpredis "redis-server /etc/redis.conf" Upregistry "/home/harbor/entrypoint.sh" Upregistryctl "/home/harbor/start.sh" Up
四、Harbor高级配置
4.1 用户与项目管理
通过Web界面(默认http://<IP>)或API创建项目:
# 使用curl创建项目示例curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" \-d '{"project_name": "devops", "public": false}' \"http://harbor.example.com/api/v2.0/projects"
4.2 镜像复制策略
配置跨Harbor实例的镜像同步:
- 在”System Management”→”Replications”创建规则
- 设置源项目和目标端点(需提前配置目标Harbor的API访问)
- 配置触发方式(手动/定时/事件驱动)
4.3 漏洞扫描配置
- 安装Clair扫描器(Harbor 2.0+内置)
- 在”Configuration”→”System Settings”启用自动扫描
- 查看扫描报告:项目→”Repositories”→选择镜像→”Vulnerabilities”
五、运维与故障排查
5.1 日常维护命令
# 停止服务cd /opt/harbordocker-compose down# 升级Harbor1. 备份数据:`cp -r /data /data_backup`2. 下载新版本安装包3. 修改harbor.yml后执行:```bash./preparedocker-compose pulldocker-compose up -d
5.2 常见问题处理
问题1:502 Bad Gateway错误
- 检查Nginx容器日志:
docker logs harbor-nginx - 常见原因:后端服务未启动或证书配置错误
问题2:镜像推送失败
- 验证登录状态:
docker login harbor.example.com - 检查项目权限:确保用户有push权限
- 查看registry日志:
docker logs registry
问题3:磁盘空间不足
- 配置自动清理策略:
# 在harbor.yml中添加trash:retain_interval: 7 # 保留天数
- 手动清理:
curl -X DELETE "http://harbor.example.com/api/v2.0/system/gc"
六、最佳实践建议
-
高可用架构:
- 使用NFS/GlusterFS共享存储
- 配置Keepalived实现VIP切换
- 数据库采用主从复制
-
安全加固:
- 启用HTTPS并配置HSTS
- 定期轮换管理员密码
- 限制管理员账户数量
-
性能优化:
- 调整Redis内存限制(
/etc/redis.conf) - 启用Registry缓存(配置
cache.enabled: true) - 对大文件镜像启用分块上传
- 调整Redis内存限制(
-
监控方案:
- 集成Prometheus+Grafana监控
- 配置Alertmanager告警规则
- 记录关键操作审计日志
七、总结
通过本文的详细步骤,读者可在CentOS 7系统上完成Harbor镜像仓库的完整部署。从基础环境搭建到高级功能配置,覆盖了生产环境所需的核心要素。实际使用时,建议结合企业安全策略调整配置参数,并定期进行备份演练。Harbor的模块化设计使得后续功能扩展(如与LDAP集成、配置CI/CD插件)变得简单高效,为容器化应用交付提供了可靠的基础设施支持。