Harbor企业级Docker镜像仓库完整教程:从安装到生产实践

Harbor是一个开源的企业级Docker镜像仓库,由VMware公司开发。它扩展了开源Docker Distribution的功能,添加了企业用户所需的安全性、可用性和管理性。本文将详细介绍Harbor的安装部署、配置优化以及生产环境最佳实践。


一、Harbor核心特性

  • 安全性:镜像签名、漏洞扫描、RBAC权限控制
  • 高可用:多节点部署、数据持久化、自动恢复
  • 易用性:Web管理界面、多租户支持、日志审计
  • 集成性:与CI/CD工具集成、API支持

二、环境准备

在安装Harbor之前,需要确保服务器满足以下要求:

  • 操作系统:Linux(推荐CentOS 7+、Ubuntu 18.04+)
  • 硬件配置:至少4核CPU、8GB内存、40GB可用磁盘空间
  • 软件依赖:Docker 20.10+、Docker Compose 2.0+、Python 3.6+
  • 网络要求:开放80/443/4443端口

2.1 安装Docker和Docker Compose

# 安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker
systemctl enable docker

# 安装Docker Compose
curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# 验证安装
docker --version
docker-compose --version

三、Harbor安装部署

3.1 下载Harbor离线安装包

# 下载最新版本(示例使用v2.10.0)
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz

# 解压
tar -xzf harbor-offline-installer-v2.10.0.tgz
cd harbor

3.2 配置Harbor

# 复制配置模板
cp harbor.yml.tmpl harbor.yml

# 编辑配置文件
vim harbor.yml

关键配置项说明:

# 主机名或IP地址
hostname: harbor.example.com

# HTTP端口(默认80)
http:
  port: 80

# HTTPS端口(默认443)
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

# 管理员密码(首次登录后建议立即修改)
harbor_admin_password: Harbor12345

# 数据存储位置
data_volume: /data/harbor

3.3 执行安装

# 执行安装脚本
./install.sh

# 如果需要启用Notary(镜像签名)
./install.sh --with-notary

# 如果需要启用Trivy(漏洞扫描)
./install.sh --with-trivy

# 如果需要启用所有功能
./install.sh --with-notary --with-trivy --with-chartmuseum

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


四、配置HTTPS证书

生产环境建议使用HTTPS。以下使用Let's Encrypt免费证书的配置步骤:

4.1 安装certbot

# CentOS/RHEL
yum install certbot -y

# Ubuntu/Debian
apt-get install certbot -y

4.2 申请证书

# 申请证书(确保域名已解析到服务器)
certbot certonly --standalone -d harbor.example.com

# 证书位置
# /etc/letsencrypt/live/harbor.example.com/fullchain.pem
# /etc/letsencrypt/live/harbor.example.com/privkey.pem

4.3 配置Harbor使用HTTPS

# 编辑harbor.yml
vim harbor.yml

# 修改HTTPS配置
https:
  port: 443
  certificate: /etc/letsencrypt/live/harbor.example.com/fullchain.pem
  private_key: /etc/letsencrypt/live/harbor.example.com/privkey.pem

# 重启Harbor
docker-compose down
docker-compose up -d

五、Harbor基本使用

5.1 创建项目和用户

登录Harbor Web界面后:

  1. 创建项目:项目 → 新建项目,设置项目名称(如myapp)和访问级别
  2. 创建用户:管理 → 用户 → 新建用户,填写用户名、邮箱、密码
  3. 分配权限:在项目设置中添加用户并分配角色

5.2 Docker客户端配置

在使用Harbor之前,需要在Docker客户端配置镜像仓库地址:

# 编辑Docker配置文件
vim /etc/docker/daemon.json

# 添加insecure-registries(HTTP方式)
{
  "insecure-registries": ["harbor.example.com"]
}

# 或者配置HTTPS(推荐)
{
  "registry-mirrors": [],
  "insecure-registries": []
}

# 重启Docker
systemctl daemon-reload
systemctl restart docker

5.3 登录Harbor

# 登录Harbor仓库
docker login harbor.example.com

# 输入用户名和密码

5.4 推送和拉取镜像

# 构建镜像
docker build -t myapp:v1.0 .

# 给镜像打标签
docker tag myapp:v1.0 harbor.example.com/myapp/myapp:v1.0

# 推送镜像到Harbor
docker push harbor.example.com/myapp/myapp:v1.0

# 从Harbor拉取镜像
docker pull harbor.example.com/myapp/myapp:v1.0

六、Harbor高级功能

6.1 镜像漏洞扫描

Harbor集成了Trivy漏洞扫描器,可以对镜像进行安全扫描:

  1. 在项目中启用漏洞扫描选项
  2. 镜像推送后自动触发扫描
  3. 查看扫描报告并修复高危漏洞

6.2 镜像签名

使用Notary为镜像签名,确保镜像来源可信:

# 启用内容信任
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://notary.harbor.example.com

# 签名并推送
docker push harbor.example.com/myapp/myapp:v1.0

6.3 镜像同步

配置镜像复制规则,实现跨Harbor实例的镜像同步:

  1. 进入仓库管理 → 复制规则
  2. 创建新的复制规则
  3. 配置源仓库和目标仓库
  4. 设置触发方式(手动/定时/事件触发)

6.4 Helm Chart仓库

Harbor可以作为Helm Chart仓库,存储和管理Kubernetes应用包:

# 添加Harbor Helm仓库
helm repo add myrepo https://harbor.example.com/chartrepo/myproject --username admin --password Harbor12345

# 搜索Chart
helm search repo myrepo

# 安装Chart
helm install myapp myrepo/mychart

七、Harbor管理操作

7.1 启动/停止Harbor

# 停止Harbor
cd /opt/harbor
docker-compose down

# 启动Harbor
docker-compose up -d

# 查看状态
docker-compose ps

7.2 备份和恢复

定期备份Harbor数据和配置:

# 备份数据卷
tar -czf harbor-data-backup-$(date +%Y%m%d).tar.gz /data/harbor

# 备份配置文件
cp harbor.yml harbor.yml.backup

# 恢复数据
tar -xzf harbor-data-backup-20240101.tar.gz -C /

7.3 日志查看

# 查看所有服务日志
docker-compose logs

# 查看特定服务日志
docker-compose logs -f core
docker-compose logs -f jobservice

# 查看最近的日志
docker-compose logs --tail=100

八、生产环境最佳实践

8.1 安全加固

  • 使用HTTPS加密传输
  • 启用镜像签名和验证
  • 定期更新Harbor版本和依赖组件
  • 配置防火墙,限制访问IP
  • 启用审计日志,记录所有操作

8.2 高可用部署

使用外部数据库和Redis,实现Harbor高可用:

# harbor.yml配置
external_database:
  host: mysql.example.com
  port: 3306
  username: root
  password: yourpassword
  core_database: harbor_core
  notary_server_database: harbor_notary_server
  notary_signer_database: harbor_notary_signer

external_redis:
  host: redis.example.com
  port: 6379
  password: yourpassword

8.3 性能优化

  • 使用SSD存储提升IO性能
  • 配置合适的存储清理策略
  • 启用镜像垃圾回收
  • 监控资源使用情况,及时扩容

8.4 监控告警

集成Prometheus和Grafana进行监控:

# 配置Prometheus指标暴露
# harbor.yml
metrics:
  enabled: true
  port: 9090
  path: /metrics

九、常见问题排查

9.1 登录失败

# 检查Docker配置
cat /etc/docker/daemon.json

# 重启Docker
systemctl restart docker

# 检查Harbor服务状态
docker-compose ps

9.2 镜像推送失败

# 检查磁盘空间
df -h

# 检查日志
docker-compose logs -f registry

# 检查权限
docker login harbor.example.com

9.3 服务启动失败

# 检查端口占用
netstat -tunlp | grep -E '80|443'

# 检查日志
docker-compose logs

# 重新安装
docker-compose down
./prepare
docker-compose up -d

十、总结

Harbor作为企业级Docker镜像仓库,提供了丰富的功能和完善的管理能力。通过本教程,你已经掌握了Harbor的安装部署、基本使用和高级功能配置。在生产环境中,务必做好安全加固、高可用部署和监控告警,确保Harbor稳定运行。

参考资料:

如果你在部署过程中遇到问题,欢迎在评论区留言讨论!

发表回复

后才能评论