Docker镜像仓库Harbor安装部署全流程指南

一、Harbor简介与核心价值

Harbor是由VMware开发的开源Docker镜像仓库管理系统,提供镜像存储、访问控制、安全扫描、镜像复制等企业级功能。相较于原生Docker Registry,Harbor通过项目隔离、RBAC权限模型、漏洞扫描等特性,解决了私有仓库在安全性、可管理性和扩展性方面的痛点。其核心优势包括:

  1. 安全管控:支持HTTPS加密传输、LDAP集成、镜像签名验证
  2. 高可用架构:支持多节点部署、数据库主从配置
  3. 运维友好:提供Web管理界面、系统健康检查、日志审计
  4. 生态兼容:兼容OCI标准,支持Helm Chart存储

二、安装环境准备

2.1 硬件配置建议

组件 最低配置 推荐配置
CPU 2核 4核及以上
内存 4GB 8GB及以上
磁盘 40GB(SSD优先) 100GB+(RAID10)
网络带宽 100Mbps 千兆网络

2.2 软件依赖检查

  1. # 检查Docker版本(需17.06+)
  2. docker --version
  3. # 检查Docker Compose版本(需1.18.0+)
  4. docker-compose --version
  5. # 安装依赖工具
  6. sudo apt-get install -y curl wget git

2.3 网络环境配置

  • 开放端口:80(HTTP)、443(HTTPS)、4443(控制台)
  • 防火墙规则示例(UFW):
    1. sudo ufw allow 80/tcp
    2. sudo ufw allow 443/tcp
    3. sudo ufw allow 4443/tcp

三、安装部署流程

3.1 离线安装包准备

  1. # 下载最新稳定版(示例为v2.7.0)
  2. wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
  3. # 解压安装包
  4. tar xvf harbor-offline-installer-v2.7.0.tgz
  5. cd harbor

3.2 配置文件修改

编辑harbor.yml核心配置项:

  1. hostname: registry.example.com # 必须为FQDN
  2. http:
  3. port: 80
  4. https:
  5. port: 443
  6. certificate: /data/cert/server.crt
  7. private_key: /data/cert/server.key
  8. harbor_admin_password: Harbor12345 # 默认管理员密码
  9. database:
  10. password: root123
  11. max_open_conns: 1000
  12. max_idle_conns: 500
  13. storage_driver:
  14. name: filesystem
  15. fs:
  16. rootpath: /data/registry

3.3 证书配置(生产环境必备)

  1. # 生成自签名证书(测试环境)
  2. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  3. -keyout /data/cert/server.key -out /data/cert/server.crt \
  4. -subj "/CN=registry.example.com"
  5. # 配置证书权限
  6. chmod 600 /data/cert/*
  7. chown -R 10000:10000 /data/cert

3.4 安装执行

  1. # 安装前准备
  2. ./prepare
  3. # 执行安装(需root权限)
  4. sudo ./install.sh

安装日志关键节点解析:

  1. 依赖检查:验证Docker和Compose版本
  2. 证书部署:将证书复制到指定路径
  3. 容器启动:依次启动core、database、jobservice等组件
  4. 健康检查:验证所有服务状态为”healthy”

四、进阶配置与管理

4.1 用户与权限管理

  1. # 创建项目
  2. curl -X POST -u admin:Harbor12345 \
  3. -H "Content-Type: application/json" \
  4. -d '{"project_name": "devops", "public": false}' \
  5. http://registry.example.com/api/v2.0/projects
  6. # 添加用户并授权
  7. curl -X POST -u admin:Harbor12345 \
  8. -H "Content-Type: application/json" \
  9. -d '{"username": "devuser", "email": "dev@example.com", "password": "DevPass123"}' \
  10. http://registry.example.com/api/v2.0/users
  11. # 分配项目角色(developer)
  12. curl -X PUT -u admin:Harbor12345 \
  13. -H "Content-Type: application/json" \
  14. -d '{"role_id": 2}' \ # 1=guest, 2=developer, 3=maintainer, 4=projectadmin
  15. http://registry.example.com/api/v2.0/projects/1/members/devuser

4.2 镜像复制策略配置

  1. # 在harbor.yml中添加复制适配器
  2. replication:
  3. - name: "aliyun_mirror"
  4. disabled: false
  5. provider: "aliyun"
  6. endpoint: "https://cr.console.aliyun.com"
  7. access_id: "your_access_key"
  8. access_secret: "your_secret_key"
  9. projects:
  10. - src_project: "library"
  11. dst_projects:
  12. - "aliyun_library"

4.3 系统维护命令

  1. # 停止服务
  2. docker-compose down
  3. # 升级Harbor
  4. 1. 备份数据库:`docker exec -it harbor-db pg_dump -U postgres -F c harbor > backup.dump`
  5. 2. 下载新版本安装包
  6. 3. 修改harbor.yml配置
  7. 4. 执行`./prepare && ./install.sh`
  8. # 日志查看
  9. docker-compose logs -f core

五、最佳实践与问题排查

5.1 性能优化建议

  1. 存储优化

    • 使用对象存储(如MinIO、AWS S3)替代文件系统存储
    • 配置存储类(StorageClass)实现动态卷管理
  2. 数据库调优

    1. -- PostgreSQL优化示例
    2. ALTER SYSTEM SET max_connections = 500;
    3. ALTER SYSTEM SET shared_buffers = 256MB;
  3. 缓存配置

    1. # 在harbor.yml中启用缓存
    2. cache:
    3. enabled: true
    4. expire_hours: 24

5.2 常见问题解决方案

问题1:502 Bad Gateway错误

  • 检查Nginx容器日志:docker logs harbor-nginx
  • 验证后端服务状态:docker-compose ps
  • 解决方案:重启core服务docker restart harbor-core

问题2:镜像推送失败

  • 检查客户端证书配置:
    1. # 配置docker信任证书
    2. mkdir -p /etc/docker/certs.d/registry.example.com
    3. cp /data/cert/server.crt /etc/docker/certs.d/registry.example.com/ca.crt
    4. systemctl restart docker

问题3:磁盘空间不足

  • 清理未使用的镜像:
    1. # 登录Harbor数据库执行
    2. docker exec -it harbor-db psql -U postgres -d registry
    3. DELETE FROM blob WHERE project_id IN (SELECT id FROM project WHERE deleted=true);

六、总结与展望

Harbor的安装部署涉及环境准备、配置优化、安全加固等多个环节。通过本文的详细指导,开发者可以完成从单机部署到生产环境高可用架构的搭建。建议后续关注:

  1. Harbor与Kubernetes的集成方案
  2. 多区域复制的带宽优化策略
  3. 基于AI的镜像漏洞预测技术

企业级部署时,建议采用Ansible/Terraform实现自动化安装,并结合Prometheus+Grafana构建监控体系。定期执行./install.sh --check进行健康检查,确保系统稳定运行。”