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界面后:
- 创建项目:项目 → 新建项目,设置项目名称(如
myapp)和访问级别 - 创建用户:管理 → 用户 → 新建用户,填写用户名、邮箱、密码
- 分配权限:在项目设置中添加用户并分配角色
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漏洞扫描器,可以对镜像进行安全扫描:
- 在项目中启用漏洞扫描选项
- 镜像推送后自动触发扫描
- 查看扫描报告并修复高危漏洞
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实例的镜像同步:
- 进入仓库管理 → 复制规则
- 创建新的复制规则
- 配置源仓库和目标仓库
- 设置触发方式(手动/定时/事件触发)
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稳定运行。
参考资料:
如果你在部署过程中遇到问题,欢迎在评论区留言讨论!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



