Harbor私有镜像仓库:从安装到配置的完整指南

Harbor私有镜像仓库:从安装到配置的完整指南

引言:为何需要私有镜像仓库?

在容器化技术普及的今天,Docker镜像已成为应用分发的核心载体。然而,使用公共镜像仓库(如Docker Hub)存在安全隐患、网络依赖和成本问题。私有镜像仓库Harbor的出现,为企业提供了安全、高效、可控的镜像管理解决方案。作为CNCF(云原生计算基金会)毕业项目,Harbor不仅支持镜像存储,还集成了漏洞扫描、权限控制、镜像复制等高级功能,成为企业DevOps流程中的关键组件。

一、安装前准备:环境与依赖检查

1.1 硬件与系统要求

Harbor对硬件资源的要求取决于使用规模。对于中小型团队,建议配置如下:

  • CPU:4核及以上(生产环境推荐8核+)
  • 内存:8GB以上(生产环境推荐16GB+)
  • 磁盘:200GB以上(根据镜像存储量调整)
  • 操作系统:Linux(推荐CentOS 7/8、Ubuntu 18.04/20.04)

1.2 依赖软件安装

Harbor依赖Docker和Docker Compose。以CentOS 8为例,安装步骤如下:

  1. # 安装Docker
  2. sudo dnf install -y yum-utils
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo dnf install -y docker-ce docker-ce-cli containerd.io
  5. sudo systemctl enable --now docker
  6. # 安装Docker Compose
  7. sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  8. sudo chmod +x /usr/local/bin/docker-compose

1.3 网络与防火墙配置

Harbor默认使用80(HTTP)、443(HTTPS)和8080(控制台)端口。需在防火墙中开放这些端口:

  1. sudo firewall-cmd --permanent --add-port={80,443,8080}/tcp
  2. sudo firewall-cmd --reload

二、Harbor安装:从下载到启动

2.1 下载Harbor安装包

访问Harbor官方发布页,选择最新稳定版(如v2.9.0)。下载并解压:

  1. wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgz
  2. tar xvf harbor-offline-installer-v2.9.0.tgz
  3. cd harbor

2.2 配置Harbor主文件

编辑harbor.yml.tmpl(或重命名为harbor.yml),核心配置项如下:

  1. hostname: harbor.example.com # 替换为实际域名
  2. http:
  3. port: 80
  4. https:
  5. port: 443
  6. certificate: /data/cert/harbor.crt # SSL证书路径
  7. private_key: /data/cert/harbor.key
  8. harbor_admin_password: Harbor12345 # 初始管理员密码
  9. database:
  10. password: root123 # 数据库密码
  11. data_volume: /data # 数据存储目录

2.3 执行安装脚本

运行安装命令,Harbor将自动拉取依赖镜像并启动服务:

  1. sudo ./install.sh

安装完成后,检查服务状态:

  1. docker-compose ps

输出应显示所有容器(如nginxharbor-coreharbor-db等)状态为Up

三、核心配置:从基础到高级

3.1 访问Harbor控制台

通过浏览器访问https://harbor.example.com(替换为实际域名),使用默认账号admin和配置的密码登录。

3.2 创建项目与用户

  1. 创建项目:在控制台点击“新建项目”,输入名称(如dev-team)并设置访问级别(公开/私有)。
  2. 添加用户:进入“系统管理”→“用户管理”,添加新用户并分配角色(如项目管理员)。

3.3 配置镜像复制策略

Harbor支持跨集群镜像复制,适用于多数据中心场景:

  1. 进入“系统管理”→“复制管理”,点击“新建规则”。
  2. 配置源项目(如dev-team)和目标项目(如另一Harbor实例的prod-team)。
  3. 设置触发方式(手动/定时)和过滤条件(如标签匹配)。

3.4 集成漏洞扫描

Harbor内置Clair扫描器,可自动检测镜像漏洞:

  1. 确保harbor-scanner-clair容器已启动。
  2. 在项目设置中启用“自动扫描”。
  3. 推送镜像后,查看“漏洞”标签页获取扫描报告。

四、安全加固:从传输到存储

4.1 启用HTTPS

使用Let’s Encrypt免费证书或自签名证书:

  1. # 生成自签名证书(示例)
  2. sudo mkdir -p /data/cert
  3. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  4. -keyout /data/cert/harbor.key -out /data/cert/harbor.crt \
  5. -subj "/CN=harbor.example.com"

更新harbor.yml中的证书路径后,重新运行./preparedocker-compose up -d

4.2 配置访问控制

  1. IP白名单:在harbor.yml中设置auth_mode: db_auth,并通过Nginx配置限制访问IP。
  2. RBAC权限:在项目设置中分配细粒度权限(如只读推送管理)。

4.3 定期备份数据

备份Harbor数据库和配置文件:

  1. # 备份数据库
  2. sudo docker exec -it harbor-db pg_dump -U postgres -d registry > /backup/harbor_db.sql
  3. # 备份配置
  4. sudo cp -r /data/config /backup/

五、常见问题与解决方案

5.1 镜像推送失败

错误示例Error response from daemon: Get https://harbor.example.com/v2/: x509: certificate signed by unknown authority

解决方案

  1. 将自签名证书添加到Docker信任列表:
    1. sudo mkdir -p /etc/docker/certs.d/harbor.example.com
    2. sudo cp /data/cert/harbor.crt /etc/docker/certs.d/harbor.example.com/ca.crt
    3. sudo systemctl restart docker

5.2 性能优化建议

  • 存储驱动:生产环境建议使用storagedriver: overlay2(而非devicemapper)。
  • 数据库调优:在harbor.yml中增加postgresql.max_connections配置。

六、总结与展望

Harbor私有镜像仓库的安装与配置涉及环境准备、服务部署、核心配置和安全加固等多个环节。通过本文的详细指导,开发者可以快速搭建一个功能完善、安全可靠的私有镜像仓库。未来,随着容器技术的演进,Harbor将进一步集成AI运维、多云管理等能力,成为企业云原生转型的重要基石。

扩展建议

  • 结合Kubernetes的ImagePullSecrets实现Harbor与集群的无缝集成。
  • 探索Harbor与CI/CD工具(如Jenkins、GitLab CI)的自动化流水线。