一、Harbor 镜像仓库简介
Harbor 是由 VMware 推出的开源企业级 Docker Registry 管理工具,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等高级功能。相较于原生 Docker Registry,Harbor 更适合企业级生产环境使用,能有效解决镜像管理、权限控制和安全审计等问题。
在 DevOps 实践中,Harbor 可作为统一的镜像仓库,实现开发、测试、生产环境的镜像版本控制,配合 CI/CD 流水线实现自动化部署。其多租户管理功能还能满足大型企业的组织架构需求。
二、环境准备与前提条件
1. 系统要求
- CentOS 7.6 或更高版本(推荐最小化安装)
- 至少 4GB 内存(生产环境建议 8GB+)
- 至少 40GB 可用磁盘空间
- 具备 root 权限或 sudo 权限的用户
2. 软件依赖
# 安装基础依赖yum install -y epel-releaseyum install -y wget curl unzip git# 安装 Docker CE(Harbor 运行依赖)yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce docker-ce-cli containerd.iosystemctl enable --now docker
3. 网络配置
- 确保服务器有固定 IP 地址
- 开放 80/443 端口(HTTP/HTTPS)
- 开放 22 端口(SSH 管理)
- 配置防火墙规则:
firewall-cmd --permanent --add-port={80,443,22}/tcpfirewall-cmd --reload
三、Harbor 安装部署流程
1. 下载安装包
访问 Harbor 官方发布页 获取最新版本,推荐使用离线安装包:
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.tgzcd harbor
2. 配置修改
编辑 harbor.yml 配置文件(关键参数说明):
hostname: registry.example.com # 修改为实际域名或IPhttp:port: 80https:certificate: /data/cert/server.crt # HTTPS证书路径private_key: /data/cert/server.keyharbor_admin_password: Harbor12345 # 初始管理员密码database:password: root123 # 数据库密码max_idle_conns: 50max_open_conns: 100
3. 生成自签名证书(测试环境)
生产环境建议使用正规 CA 签发的证书,测试环境可生成自签名证书:
mkdir -p /data/certopenssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/server.key \-x509 -days 365 -out /data/cert/server.crt -subj "/CN=registry.example.com"
4. 执行安装
./install.sh --with-clair # 可选安装漏洞扫描组件Clair
安装过程会自动完成以下操作:
- 创建 Docker 网络
- 启动 PostgreSQL 数据库
- 启动 Redis 缓存
- 启动 Core 服务
- 启动 Notary 签名服务
- 启动 Portal Web 界面
四、Harbor 核心功能配置
1. 项目管理
通过 Web 界面创建项目时,可配置:
- 镜像拉取权限(公开/私有)
- 存储配额限制
- 镜像自动清理策略
- 复制策略(与其他Registry同步)
2. 用户与权限管理
支持多种认证方式:
- 数据库认证(内置用户)
- LDAP/AD 集成
- OAuth2 认证
权限模型采用 RBAC,可精细控制:
- 项目管理员
- 开发者
- 访客
- 机器人账号(用于CI/CD)
3. 镜像复制策略
配置跨集群镜像同步示例:
# 在目标Harbor的System->Replication页面创建{"name": "prod-to-dev","src_registry": {"url": "https://prod-registry.example.com","insecure": false},"dest_registry": {"url": "https://dev-registry.example.com","insecure": false},"dest_namespace": "library","trigger": {"type": "manual", # 可选manual/immediate/scheduled"schedule_param": {}},"filters": [{"type": "name","pattern": "^nginx.*"}]}
五、使用验证与维护
1. 基础操作验证
# 登录Harbordocker login registry.example.com# 推送镜像docker tag nginx:latest registry.example.com/library/nginx:v1docker push registry.example.com/library/nginx:v1# 拉取镜像docker pull registry.example.com/library/nginx:v1
2. 日常维护命令
# 停止服务docker-compose down# 启动服务docker-compose up -d# 查看日志docker-compose logs -f# 升级Harbor1. 备份数据库和配置2. 下载新版本安装包3. 修改harbor.yml(保持原有配置)4. 执行./prepare5. 重启服务
3. 性能优化建议
- 数据库优化:定期执行
vacuum full清理碎片 - 存储优化:配置对象存储(如S3/MinIO)作为后端
- 网络优化:启用HTTP/2提升传输效率
- 监控告警:集成Prometheus+Grafana监控
六、常见问题解决方案
1. 证书问题处理
错误现象:x509: certificate signed by unknown authority
解决方案:
# 将自签名证书添加到Docker信任链mkdir -p /etc/docker/certs.d/registry.example.comcp /data/cert/server.crt /etc/docker/certs.d/registry.example.com/ca.crtsystemctl restart docker
2. 端口冲突处理
若80/443端口被占用:
# 修改harbor.ymlhttp:port: 8080https:port: 8443
3. 存储空间不足
解决方案:
- 扩展磁盘空间
- 配置自动清理策略
- 使用对象存储作为后端
七、最佳实践建议
- 高可用架构:建议部署主备Harbor实例,通过复制策略保持同步
- 安全加固:
- 定期更新Harbor版本
- 启用镜像签名验证
- 限制管理员权限
- 备份策略:
- 每日数据库备份
- 配置文件版本控制
- 存储快照
- CI/CD集成:
- 为每个项目创建专用机器人账号
- 配置镜像自动构建和推送
- 集成漏洞扫描结果到流水线
通过以上步骤,您可以在CentOS 7系统上成功部署一个功能完善的企业级镜像仓库。Harbor的强大功能不仅能满足日常的镜像管理需求,还能通过其高级特性提升整个DevOps流程的安全性和效率。