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 harbor

3. 复制配置模板

cp harbor.yml.tmpl harbor.yml

4. 修改配置文件

# 修改主机名为本机 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.yml

5. 修改 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:latest

3. 推送镜像

docker push 192.168.40.10/library/nginx:latest

Harbor 目录结构

目录/文件 说明
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”?

  1. 确认用户名和密码是否正确(默认 admin / Harbor12345)
  2. 如忘记密码,重置方式如下:
# 进入数据库容器
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 restart

Q:如何修改 Harbor 域名或 IP?

修改 harbor.yml 中的 hostname 字段,然后重新执行安装:

./install.sh

Q:推送镜像时报 “unauthorized: authentication required”?

  1. 确认已执行 docker login 登录
  2. 检查项目权限是否正确
  3. 确认目标项目是否存在(需提前在 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 -d

Q:Harbor 证书过期如何处理?

进入容器重新生成证书:

docker exec -it harbor-core /bin/bash
cd /etc/core
./generate_cert.sh --host harbor.example.com

参考链接