一、Harbor镜像仓库概述
Harbor是由VMware开源的企业级Docker Registry管理工具,提供基于角色的访问控制、镜像签名、漏洞扫描等安全功能。相较于原生Docker Registry,Harbor通过Web界面、REST API和CLI工具实现更精细化的镜像管理,特别适合需要构建私有镜像仓库的企业环境。
核心功能模块包括:
- 项目管理:支持多级命名空间隔离
- 用户管理:集成LDAP/AD认证
- 复制策略:实现镜像跨Registry同步
- 审计日志:记录完整操作轨迹
- 漏洞扫描:集成Clair安全扫描引擎
二、CentOS 7环境准备
2.1 系统要求
- CentOS 7.6及以上版本(建议使用Minimal安装)
- 4核CPU/8GB内存基础配置(生产环境建议8核16GB)
- 40GB以上磁盘空间(根据镜像存储需求调整)
- 静态IP地址配置
2.2 依赖安装
# 安装基础开发工具yum install -y wget curl git vim net-tools# 配置Docker CEsudo 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 -y docker-ce docker-ce-cli containerd.iosudo systemctl enable dockersudo systemctl start docker# 配置Docker存储驱动(建议使用overlay2)cat > /etc/docker/daemon.json <<EOF{"storage-driver": "overlay2","insecure-registries": ["harbor.example.com"]}EOFsudo systemctl restart docker
2.3 网络配置
# 配置防火墙规则sudo firewall-cmd --permanent --add-port=80/tcp # HTTP访问sudo firewall-cmd --permanent --add-port=443/tcp # HTTPS访问sudo firewall-cmd --permanent --add-port=4443/tcp # 控制台端口sudo firewall-cmd --reload
三、Harbor安装部署
3.1 下载安装包
# 获取最新版本(示例使用v2.7.0)wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgztar xvf harbor-offline-installer-v2.7.0.tgzcd harbor
3.2 配置修改
编辑harbor.yml配置文件:
hostname: harbor.example.com # 必须与证书CN匹配http:port: 80https:port: 443certificate: /data/cert/harbor.crtprivate_key: /data/cert/harbor.keyharbor_admin_password: Harbor12345 # 默认管理员密码database:password: root123max_idle_conns: 50max_open_conns: 100storage_driver:name: filesystemfs_driver:rootdirectory: /var/lib/registry
3.3 证书生成(自签名示例)
mkdir -p /data/certopenssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/harbor.key \-x509 -days 3650 -out /data/cert/harbor.crt \-subj "/C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=harbor.example.com"
3.4 安装执行
# 安装前检查依赖./prepare# 执行安装(需要root权限)sudo ./install.sh
安装完成后验证服务状态:
docker-compose ps# 正常应显示以下服务运行中:# harbor-core# harbor-db# harbor-jobservice# harbor-portal# nginx# registry# registryctl
四、进阶配置与管理
4.1 用户权限管理
-- 通过数据库直接管理(生产环境建议使用API)USE registry;INSERT INTO user (username, email, password, realname)VALUES ('devuser', 'dev@example.com', '$2a$10$...', 'Developer');INSERT INTO project (name, owner_id, public)VALUES ('dev-project', 1, 0);INSERT INTO member (user_id, project_id, role)VALUES (2, 1, 1); -- 1=开发者角色
4.2 镜像复制策略
# 配置replicate.yml示例policies:- name: "sync-to-cloud"src_registry:url: "https://harbor.example.com"insecure: falsedest_registry:url: "https://cloud-registry.example.com"insecure: falsedest_namespace: "library"filters:- type: "name"pattern: "^library/.*"trigger:type: "manual"delete_remote_resources: false
4.3 性能优化建议
-
存储优化:
- 使用NFS/iSCSI作为后端存储时,建议配置
storage_driver.redis.namespace - 定期执行
docker system prune -af清理无用镜像
- 使用NFS/iSCSI作为后端存储时,建议配置
-
数据库调优:
# /etc/my.cnf 调整[mysqld]innodb_buffer_pool_size = 4Gmax_connections = 500query_cache_size = 64M
-
高可用方案:
- 部署Keepalived+HAProxy实现负载均衡
- 使用共享存储(如GlusterFS)存储镜像数据
- 配置Harbor集群模式(需Enterprise版)
五、运维管理实践
5.1 备份恢复策略
# 完整备份脚本示例#!/bin/bashBACKUP_DIR="/backup/harbor_$(date +%Y%m%d)"mkdir -p $BACKUP_DIR# 数据库备份docker exec -it harbor-db sh -c "mysqldump -uroot -proot123 registry > /tmp/registry.sql"docker cp harbor-db:/tmp/registry.sql $BACKUP_DIR/# 配置文件备份cp -r /data/config $BACKUP_DIR/cp -r /data/cert $BACKUP_DIR/# 镜像数据备份(可选)tar czf $BACKUP_DIR/registry_data.tar.gz /var/lib/registry
5.2 监控方案
-
Prometheus配置示例:
# /etc/prometheus/prometheus.ymlscrape_configs:- job_name: 'harbor'metrics_path: '/api/v2.0/metrics'static_configs:- targets: ['harbor.example.com:443']scheme: httpstls_config:insecure_skip_verify: true
-
关键监控指标:
harbor_project_count:项目数量harbor_repository_count:仓库数量harbor_artifact_count:镜像数量harbor_jobservice_queue_length:任务队列积压
六、常见问题解决方案
6.1 证书问题处理
# 证书不受信任错误处理sudo mkdir -p /etc/docker/certs.d/harbor.example.comsudo cp /data/cert/harbor.crt /etc/docker/certs.d/harbor.example.com/ca.crtsudo systemctl restart docker
6.2 性能瓶颈诊断
# 检查Registry存储性能docker exec -it registry sh -c "df -h /storage"docker exec -it registry sh -c "iostat -x 1"# 检查数据库连接数docker exec -it harbor-db sh -c "echo 'SHOW STATUS LIKE \"Threads_connected\";' | mysql -uroot -proot123 registry"
6.3 升级注意事项
- 升级前必须执行完整备份
- 检查版本兼容性矩阵
- 使用
./prepare脚本更新配置 - 执行
docker-compose down && docker-compose up -d重启服务
七、最佳实践建议
-
定期审计:
- 每月检查未使用的镜像(
docker system df) - 每季度审查用户权限
- 每月检查未使用的镜像(
-
安全加固:
- 启用镜像签名验证
- 配置自动漏洞扫描(Clair)
- 限制匿名访问
-
容量规划:
- 预留20%的磁盘空间作为缓冲
- 根据业务增长预测每季度扩容
-
灾备方案:
- 异地双活部署
- 定期演练恢复流程
通过以上完整部署方案,企业可以在CentOS 7环境下快速构建高可用的Harbor镜像仓库,实现容器镜像的全生命周期管理。实际部署时建议先在测试环境验证配置,再逐步推广到生产环境。