手把手教你搭建企业级Harbor私有镜像仓库

手把手教会你,如何搭建企业级的Harbor私有镜像仓库

一、为什么需要企业级私有镜像仓库?

在云原生时代,容器化已成为企业应用部署的主流方案。然而,依赖公有镜像仓库(如Docker Hub)存在三大风险:

  1. 网络依赖:跨国拉取镜像速度慢,甚至因防火墙拦截失败
  2. 安全隐患:公有仓库可能被植入恶意镜像,或泄露企业敏感信息
  3. 成本失控:大规模企业每月下载流量费用可能高达数万元

企业级私有镜像仓库的核心价值在于:

  • 安全可控:通过镜像签名、漏洞扫描确保镜像完整性
  • 高效稳定:本地缓存加速部署,支持多地域同步
  • 合规审计:完整记录镜像操作日志,满足等保要求

二、环境准备:硬件与软件要求

硬件配置建议

组件 最小配置 推荐配置
服务器 4核8G 8核16G+(生产环境)
磁盘空间 200GB(SSD) 1TB+(支持存储扩展)
网络带宽 100Mbps 千兆以上

软件依赖清单

  1. # CentOS 7/8 安装前准备
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. # 启用Docker并配置镜像加速
  6. sudo systemctl enable --now docker
  7. sudo mkdir -p /etc/docker
  8. cat > /etc/docker/daemon.json <<EOF
  9. {
  10. "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"],
  11. "insecure-registries": ["harbor.yourdomain.com"]
  12. }
  13. EOF
  14. sudo systemctl restart docker

三、Harbor核心组件安装

1. 安装Harbor依赖服务

  1. # 安装并配置Nginx作为反向代理
  2. sudo yum install -y nginx
  3. cat > /etc/nginx/conf.d/harbor.conf <<EOF
  4. server {
  5. listen 80;
  6. server_name harbor.yourdomain.com;
  7. location / {
  8. proxy_pass http://127.0.0.1:8080;
  9. proxy_set_header Host \$host;
  10. proxy_set_header X-Real-IP \$remote_addr;
  11. }
  12. }
  13. EOF
  14. sudo systemctl enable --now nginx
  15. # 安装PostgreSQL数据库(可选)
  16. # 生产环境建议使用外部数据库
  17. sudo yum install -y postgresql12-server
  18. sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
  19. sudo systemctl enable --now postgresql-12

2. Harbor在线安装流程

  1. # 下载最新版Harbor(以2.5.0为例)
  2. wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-online-installer-v2.5.0.tgz
  3. tar xvf harbor-online-installer-v2.5.0.tgz
  4. cd harbor
  5. # 修改配置文件
  6. cp harbor.yml.tmpl harbor.yml
  7. vi harbor.yml
  8. # 关键配置项:
  9. # hostname: harbor.yourdomain.com
  10. # http:
  11. # port: 8080
  12. # https:
  13. # certificate: /path/to/cert.pem
  14. # private_key: /path/to/key.pem
  15. # database:
  16. # password: root123
  17. # harbor_admin_password: Harbor12345
  18. # 执行安装
  19. sudo ./install.sh

3. 离线安装方案(适用于内网环境)

  1. # 准备离线包
  2. docker save -o harbor-offline.tar goharbor/harbor-core:v2.5.0 \
  3. goharbor/harbor-db:v2.5.0 \
  4. goharbor/harbor-jobservice:v2.5.0 \
  5. goharbor/harbor-portal:v2.5.0 \
  6. goharbor/harbor-registryctl:v2.5.0 \
  7. goharbor/nginx-photon:v2.5.0 \
  8. goharbor/registry-photon:v2.5.0 \
  9. goharbor/clair-photon:v2.5.0 \
  10. goharbor/notary-server-photon:v2.5.0 \
  11. goharbor/notary-signer-photon:v2.5.0
  12. # 在目标机器加载镜像
  13. docker load -i harbor-offline.tar

四、企业级配置优化

1. 高可用架构设计

  1. graph LR
  2. A[负载均衡器] --> B[Harbor节点1]
  3. A --> C[Harbor节点2]
  4. B --> D[共享存储NFS]
  5. C --> D
  6. B --> E[外部数据库]
  7. C --> E

实施要点

  • 使用Keepalived+Nginx实现访问层高可用
  • 配置共享存储(推荐GlusterFS/Ceph)
  • 数据库采用主从复制模式

2. 安全加固方案

  1. # 启用HTTPS(需提前准备证书)
  2. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  3. -keyout /data/cert/harbor.key -out /data/cert/harbor.crt
  4. # 配置镜像签名验证
  5. cat >> /etc/docker/daemon.json <<EOF
  6. {
  7. "allow-nondistributable-artifacts": ["harbor.yourdomain.com"],
  8. "tls": true,
  9. "tlscacert": "/data/cert/ca.crt",
  10. "tlscert": "/data/cert/client.crt",
  11. "tlskey": "/data/cert/client.key"
  12. }
  13. EOF
  14. # 启用RBAC权限控制
  15. curl -X POST "http://harbor.yourdomain.com/api/v2.0/projects" \
  16. -H "accept: application/json" \
  17. -H "Content-Type: application/json" \
  18. -d '{
  19. "project_name": "production",
  20. "public": false,
  21. "metadata": {
  22. "public": "false"
  23. }
  24. }' -u admin:Harbor12345

3. 性能调优参数

参数 默认值 推荐值(生产) 说明
MAX_JOB_WORKERS 3 10 并发任务数
LOG_LEVEL info warn 日志级别
STORAGE_TIMEOUT 300 1800 存储操作超时时间(秒)
REGISTRY_STORAGE_S3 - 启用 使用对象存储作为后端

五、运维管理最佳实践

1. 日常监控方案

  1. # Prometheus监控配置
  2. cat > /etc/prometheus/prometheus.yml <<EOF
  3. scrape_configs:
  4. - job_name: 'harbor'
  5. static_configs:
  6. - targets: ['harbor.yourdomain.com:9090']
  7. EOF
  8. # 关键监控指标
  9. - harbor_project_count
  10. - harbor_repository_count
  11. - harbor_artifact_count
  12. - harbor_jobservice_queue_depth

2. 备份恢复策略

  1. # 完整备份脚本
  2. #!/bin/bash
  3. BACKUP_DIR="/backup/harbor_$(date +%Y%m%d)"
  4. mkdir -p $BACKUP_DIR
  5. # 数据库备份
  6. docker exec -it harbor-db pg_dump -U postgres -h 127.0.0.1 registry > $BACKUP_DIR/registry.sql
  7. # 配置文件备份
  8. cp -r /etc/harbor $BACKUP_DIR/
  9. # 镜像存储备份(增量)
  10. rsync -avz /data/registry $BACKUP_DIR/
  11. # 打包并上传到对象存储
  12. tar czf $BACKUP_DIR.tar.gz $BACKUP_DIR
  13. aws s3 cp $BACKUP_DIR.tar.gz s3://harbor-backup/

3. 升级维护流程

  1. sequenceDiagram
  2. participant 运维人员
  3. participant Harbor集群
  4. participant 监控系统
  5. 运维人员->>Harbor集群: 1. 停止所有服务
  6. Harbor集群-->>运维人员: 返回停止状态
  7. 运维人员->>Harbor集群: 2. 备份数据
  8. Harbor集群-->>运维人员: 返回备份完成
  9. 运维人员->>Harbor集群: 3. 执行升级脚本
  10. Harbor集群-->>监控系统: 4. 启动新版本服务
  11. 监控系统->>运维人员: 5. 发送健康检查报告

六、常见问题解决方案

1. 镜像推送失败排查

  1. # 检查日志
  2. docker logs harbor-registry
  3. # 常见原因:
  4. # - 磁盘空间不足(df -h)
  5. # - 认证失败(检查token)
  6. # - 网络策略限制(iptables -L)
  7. # 解决方案示例:
  8. # 清理未引用的镜像层
  9. docker run -it --rm \
  10. -v /var/lib/registry:/var/lib/registry \
  11. registry:2 garbage-collect /etc/registry/config.yml

2. 性能瓶颈优化

症状 可能原因 解决方案
镜像拉取慢 网络带宽不足 启用P2P加速/CDN缓存
登录超时 数据库连接池耗尽 调整DB_MAX_CONNS参数
界面响应延迟 Redis缓存失效 重启redis服务并检查配置

七、进阶功能扩展

1. 与CI/CD集成示例

  1. # GitLab CI配置示例
  2. push_to_harbor:
  3. stage: deploy
  4. script:
  5. - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
  6. - docker login harbor.yourdomain.com -u $HARBOR_USER -p $HARBOR_PASS
  7. - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA harbor.yourdomain.com/production/$CI_PROJECT_NAME:$CI_COMMIT_SHA
  8. - docker push harbor.yourdomain.com/production/$CI_PROJECT_NAME:$CI_COMMIT_SHA
  9. only:
  10. - master

2. 多集群镜像同步

  1. # 配置replication规则
  2. curl -X POST "http://harbor.yourdomain.com/api/v2.0/replication/policies" \
  3. -H "accept: application/json" \
  4. -H "Content-Type: application/json" \
  5. -d '{
  6. "name": "sync-to-dev",
  7. "projects": [
  8. {
  9. "project_id": 1,
  10. "resource_filter": "**"
  11. }
  12. ],
  13. "target": {
  14. "name": "dev-cluster",
  15. "url": "https://harbor-dev.yourdomain.com",
  16. "username": "syncuser",
  17. "password": "devpass"
  18. },
  19. "trigger": {
  20. "type": "manual"
  21. },
  22. "enabled": true
  23. }' -u admin:Harbor12345

结语

通过本文的详细指导,您已经掌握了从环境准备到高级运维的全流程Harbor私有仓库搭建方案。实际部署时,建议:

  1. 先在测试环境验证所有配置
  2. 制定完善的备份恢复策略
  3. 定期进行安全审计和性能优化
  4. 关注Harbor官方更新(建议每季度升级)

企业级私有镜像仓库是容器化转型的关键基础设施,合理规划可为企业每年节省数万元的公有云费用,同时显著提升应用部署的安全性和效率。