Harbor
概述
Harbor 是一个开源的云原生容器镜像注册中心,用于管理和分发容器镜像。它提供了一个安全、高效且功能丰富的平台,旨在为企业级应用提供镜像存储和管理服务。
核心功能:
- 镜像存储与分发:支持 Docker 镜像和 Helm Chart 的托管
- 安全扫描:集成 Trivy 扫描器,检测镜像漏洞
- 角色权限管理:基于角色的访问控制(RBAC)
- 镜像复制:支持跨 Harbor 实例的镜像同步
- Webhook 与审计:事件通知和操作日志记录
部署准备
1. 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核+ |
| 内存 | 4 GB | 8 GB+ |
| 硬盘 | 40 GB | 100 GB+ |
| Docker | 17.06+ | 最新版 |
| Docker Compose | 1.18.0+ | 最新版 |
2. 安装 Docker 和 Docker Compose
# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker
# 安装 Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose下载与配置
1. 下载 Harbor 离线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-online-installer-v2.10.3.tgz说明:在线安装包体积较小,安装过程中会自动拉取所需镜像。如网络环境较差,建议使用离线安装包(
harbor-offline-installer-v*.tgz)。
2. 解压并进入目录
tar -xf harbor-online-installer-v2.10.3.tgz
cd harbor3. 复制配置模板
cp harbor.yml.tmpl harbor.yml4. 修改配置文件
# 修改主机名为本机 IP
sed -i 's/hostname: reg.mydomain.com/hostname: 192.168.40.10/g' harbor.yml
# 关闭 HTTPS(测试环境)
sed -i 's/https:/#https:/g' harbor.yml
sed -i 's/port: 443/#port: 443/g' harbor.yml
sed -i 's#certificate: /your/certificate/path#\#certificate: /your/certificate/path#g' harbor.yml
sed -i 's#private_key: /your/private/key/path#\#private_key: /your/private/key/path#g' harbor.yml5. 修改 Harbor 端口(可选)
如需修改默认端口,在 harbor.yml 中修改:
# HTTP 端口(默认 80)
port: 8080修改后访问地址变为 http://192.168.40.10:8080。
安装 Harbor
./install.sh安装过程会:
- 自动生成
docker-compose.yaml文件 - 拉取 Harbor 及其依赖服务镜像
- 启动所有 Harbor 服务
查看运行状态:
docker compose ps验证访问
curl http://192.168.40.10在浏览器中打开 http://192.168.40.10 即可访问 Harbor。
默认登录信息:
- 用户名:
admin - 密码:
Harbor12345
重要:首次登录后请立即修改 admin 密码。
常用管理命令
| 操作 | 命令 |
|---|---|
| 启动 Harbor | docker compose up -d |
| 停止 Harbor | docker compose stop |
| 重启 Harbor | docker compose restart |
| 查看状态 | docker compose ps |
| 查看日志 | docker compose logs -f --tail=100 |
| 关闭 Harbor | docker compose down |
Docker 登录与推送镜像
1. 登录 Harbor
docker login http://192.168.40.10输入用户名 admin 和密码 Harbor12345。
2. 标记镜像
docker tag nginx:latest 192.168.40.10/library/nginx:latest3. 推送镜像
docker push 192.168.40.10/library/nginx:latestHarbor 目录结构
| 目录/文件 | 说明 |
|---|---|
harbor.yml |
Harbor 主配置文件 |
install.sh |
安装脚本 |
prepare |
环境准备工具 |
docker-compose.yml |
安装时自动生成的编排文件 |
common/ |
共享配置目录 |
data/ |
数据存储目录(镜像、数据库等) |
开启 HTTPS(生产环境推荐)
如需在生产环境中开启 HTTPS,需准备有效的 SSL 证书:
# harbor.yml
hostname: harbor.example.com
https:
port: 443
certificate: /path/to/your/certificate.pem
private_key: /path/to/your/private_key.pem修改配置后重新执行安装:
./install.sh常见问题
Q:安装失败,提示端口被占用?
检查 80、443 端口是否被其他服务占用:
netstat -tlnp | grep -E '80|443'修改 harbor.yml 中的端口配置后,重新执行 ./install.sh。
Q:登录报错 “Incorrect username or password”?
- 确认用户名和密码是否正确(默认 admin / Harbor12345)
- 如忘记密码,重置方式如下:
# 进入数据库容器
docker exec -it harbor-db /bin/bash
psql -U postgres -d registry
UPDATE harbor_user SET salt='', password='' WHERE username='admin';
\q
exit
# 重启 Harbor
docker compose restartQ:如何修改 Harbor 域名或 IP?
修改 harbor.yml 中的 hostname 字段,然后重新执行安装:
./install.shQ:推送镜像时报 “unauthorized: authentication required”?
- 确认已执行
docker login登录 - 检查项目权限是否正确
- 确认目标项目是否存在(需提前在 Harbor Web 创建)
Q:如何备份和恢复 Harbor?
备份数据目录:
# 停止 Harbor
docker compose down
# 备份数据
tar -czf harbor_backup.tar.gz data/ common/config/ harbor.yml
# 恢复
tar -xzf harbor_backup.tar.gz -C /path/to/harbor
docker compose up -dQ:Harbor 证书过期如何处理?
进入容器重新生成证书:
docker exec -it harbor-core /bin/bash
cd /etc/core
./generate_cert.sh --host harbor.example.com