Docker+Harbor实战:私有镜像仓库搭建与镜像推送全流程

一、环境准备与前置条件

1.1 服务器资源规划

  • 硬件要求:建议使用2核4G以上配置的Linux服务器(Ubuntu 20.04/CentOS 8),存储空间根据镜像规模预留(如100GB起步)。
  • 网络环境:确保服务器有公网IP或内网可访问地址,开放80(HTTP)、443(HTTPS)、22(SSH)及2376(Docker远程管理)端口。
  • 域名配置:为Harbor配置独立域名(如harbor.example.com),并申请SSL证书(Let’s Encrypt免费证书或企业级证书)。

1.2 依赖软件安装

  1. # 安装Docker(Ubuntu示例)
  2. sudo apt update
  3. sudo apt install -y docker.io
  4. sudo systemctl enable --now docker
  5. # 安装Docker Compose(v2.0+)
  6. 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
  7. sudo chmod +x /usr/local/bin/docker-compose

二、Harbor私有仓库安装与配置

2.1 Harbor安装包获取

从Harbor官方GitHub下载最新稳定版(如v2.9.0),选择harbor-offline-installer-v2.9.0.tgz离线包。

2.2 配置文件修改

解压后编辑harbor.yml.tmpl,关键配置项:

  1. hostname: harbor.example.com # 必须与域名一致
  2. http:
  3. port: 80
  4. https:
  5. certificate: /path/to/your/cert.pem
  6. private_key: /path/to/your/key.pem
  7. harbor_admin_password: Harbor12345 # 初始管理员密码
  8. database:
  9. password: root123 # 数据库密码
  10. storage_driver:
  11. name: filesystem # 存储驱动(可选S3/Azure等)
  12. filesystem:
  13. rootdir: /data

2.3 安装执行

  1. # 生成配置文件
  2. cp harbor.yml.tmpl harbor.yml
  3. # 执行安装(需提前安装Docker Compose)
  4. sudo ./install.sh

安装完成后,访问https://harbor.example.com,使用默认账号admin和配置的密码登录。

三、Docker客户端集成Harbor

3.1 配置Docker信任证书

将Harbor的CA证书(如ca.crt)复制到Docker证书目录:

  1. sudo mkdir -p /etc/docker/certs.d/harbor.example.com
  2. sudo cp ca.crt /etc/docker/certs.d/harbor.example.com/
  3. sudo systemctl restart docker

3.2 登录Harbor仓库

  1. docker login harbor.example.com
  2. # 输入用户名(admin或项目成员账号)和密码

3.3 镜像标记与推送

  1. # 标记本地镜像(以nginx为例)
  2. docker tag nginx:latest harbor.example.com/library/nginx:v1
  3. # 推送镜像
  4. docker push harbor.example.com/library/nginx:v1

四、Harbor高级功能实战

4.1 项目与用户管理

  • 创建项目:在Harbor Web界面新建项目(如dev-team),设置公开/私有权限。
  • 添加用户:通过“用户管理”创建账号,分配至项目(开发者/访客角色)。
  • 机器人账号:为CI/CD流水线创建机器人账号,生成长期有效的Token。

4.2 镜像复制策略

配置跨仓库镜像同步(如从Harbor A复制到Harbor B):

  1. 在“系统管理”→“仓库管理”添加目标仓库。
  2. 创建复制规则,指定源项目、目标仓库及触发方式(手动/定时)。

4.3 漏洞扫描与策略

  • 启用Trivy扫描:在harbor.yml中配置trivy:项,重启Harbor。
  • 设置拦截策略:对高风险漏洞镜像自动阻止推送。

五、故障排查与优化

5.1 常见问题

  • 证书错误:检查/etc/docker/certs.d/下域名与证书匹配性。
  • 推送403错误:确认用户有项目写入权限,镜像标签格式正确。
  • Harbor启动失败:查看/var/log/harbor/日志,检查数据库连接或存储权限。

5.2 性能优化

  • 存储扩展:使用对象存储(如MinIO)替代本地文件系统。
  • 数据库调优:修改harbor.ymlpostgresqlmax_connections参数。
  • 负载均衡:部署Nginx反向代理,实现Harbor组件高可用。

六、企业级实践建议

  1. 权限最小化:按团队划分项目,禁用admin账号日常使用。
  2. 镜像签名:结合Notary实现镜像内容信任(DCT)。
  3. 备份策略:定期备份Harbor数据库(/data/database)和配置文件。
  4. 监控集成:通过Prometheus+Grafana监控仓库使用率、推送频率等指标。

通过本文的详细步骤,开发者可快速完成Docker与Harbor私有仓库的搭建,并掌握镜像推送、权限管理等核心操作。Harbor不仅解决了镜像安全存储问题,其丰富的企业级功能(如漏洞扫描、复制策略)更能满足DevOps全流程需求。实际部署时,建议结合企业安全规范调整配置,并定期进行压力测试与灾备演练。