安装 Harbor(制品仓库)
本指南介绍如何在 Ubuntu 24.04 LTS 服务器上安装和配置 Harbor。Harbor 是主流的 云原生制品仓库(CNCF graduated 项目):支持以 OCI(Open Container Initiative)格式存储制品。您可以在其中托管 Docker 构建(容器镜像)、用于 Kubernetes 的 Helm 图表,以及 SBOM(Software Bill of Materials),在较新版本中还支持 AI/ML 制品。Harbor 集成 Trivy 进行漏洞扫描,支持 RBAC、OIDC/LDAP 以及仓库间 复制。
本文描述的部署使用 官方安装程序(Docker Compose)在 VM 或专用服务器上运行,配合 HTTPS 和 Let's Encrypt 证书。
订购服务器
要托管 Harbor 实例,HostMyServers 提供多种方案:
- Performance VPS - 适合测试仓库或小规模使用
- NVMe VPS - 性价比高
- 经济型专用服务器 - 适合多项目或多镜像
- 性能专用服务器 - 最佳性能
前提条件
- 以 root 或具有 sudo 权限的用户进行 SSH 访问
- Ubuntu 24.04 LTS 64 位系统
- Docker(引擎 20.10.10+)和 Docker Compose(v2 或 v1.18+)
- 一个 域名(例如
harbor.您 的域名.com),并有一条指向服务器 IP 的 A 记录 - 端口 80(HTTP,用于 Certbot 或重定向)和 443(HTTPS)可访问
配置要求
| 组件 | 最低 | 推荐 |
|---|---|---|
| 内存 | 4 GB | 8 GB |
| CPU | 2 核 | 4 核 |
| 存储 | 40 GB | 160 GB |
| 网络 | 100 Mbps | 1 Gbps |
在生产环境中,务必使用有效证书(Let's Encrypt 或企业 PKI)配置 HTTPS。Harbor 正在逐步弃用 HTTP。
连接服务器
通过 SSH 连接到服务器:
ssh 用户@服务器IP地址
系统更新
开始前更新软件包:
sudo apt update
sudo apt upgrade -y
安装 Docker 与 Docker Compose
Harbor 依赖 Docker 和 Docker Compose。若尚未安装:
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${VERSION_CODENAME:-$VERSION}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证:
docker --version
docker compose version
获取 TLS 证书(Let's Encrypt)
Harbor 必须配置证书和私钥。请在安装 Harbor 之前使用 Certbot 获取(端口 80 需空闲):
sudo apt install -y certbot
sudo certbot certonly --standalone -d harbor.您的域名.com -m 您的邮箱@示例.com --agree-tos --non-interactive
证书文件位于 /etc/letsencrypt/live/harbor.您的域名.com/:fullchain.pem(证书)和 privkey.pem(私钥)。请记下这些路径供下一步使用。
Certbot 会自动续期证书。续期后请重启 Harbor 容器以重新加载证书:cd /opt/harbor && sudo docker compose down && sudo docker compose up -d。
下载并解压 Harbor
Harbor 提供 离线安装包(含镜像)或 在线安装(首次运行时下载镜像)。我们使用离线安装包以提高可靠性。
请查看 GitHub 上的 Harbor 发行版 获取最新稳定版(例如 v2.14.2)。如需请调整 URL 和文件名:
cd /opt
sudo wget https://github.com/goharbor/harbor/releases/download/v2.14.2/harbor-offline-installer-v2.14.2.tgz
sudo tar xzvf harbor-offline-installer-v2.14.2.tgz
cd harbor
配置 Harbor
复制配置模板并编辑:
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
需要修改的主要参数(请替换为您的值):
# 主机名或域名(不要使用 localhost)
hostname: harbor.您的域名.com
# HTTPS(生产环境必选)
https:
port: 443
certificate: /etc/letsencrypt/live/harbor.您的域名.com/fullchain.pem
private_key: /etc/letsencrypt/live/harbor.您的域名.com/privkey.pem
# 管理员密码(首次登录后务必修改)
harbor_admin_password: 您的强密码
# 数据目录
data_volume: /data/harbor
# 使用 Trivy 进行漏洞扫描(推荐)
trivy:
ignore_unfixed: false
security_check: vuln,config,secret
skip_update: false
insecure: false
| 参数 | 说明 |
|---|---|
hostname | 用于访问 Harbor 的域名或 FQDN(须与证书一致) |
https.certificate / private_key | 证书与 TLS 私钥路径 |
harbor_admin_password | admin 账号密码(首次登录后修改) |
data_volume | Harbor 数据存储目录 |
trivy.* | Trivy 扫描选项(CVE、config、secrets) |
模板中的默认密码为 Harbor12345。请在首次启动前改为强密码。
启动安装
使用 Trivy 选项运行安装脚本以启用镜像漏洞扫描:
sudo ./install.sh --with-trivy
脚本会检查前置条件、生成 Docker Compose 文件并启动容器。 结束时应看到:
✔ ----Harbor has been installed and started successfully.----
防火墙
如需开放 HTTP 与 HTTPS 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
访问 Harbor
- 在浏览器中打开:
https://harbor.您的域名.com - 使用默认账号登录:admin / 在
harbor_admin_password中设置的密码 - 立即修改管理员密码:管理 → 用户 → 编辑 admin 账号
- 创建一个 项目(例如
我的项目)用于推送镜像
向 Harbor 推送镜像
在已安装 Docker 且能访问 Harbor 的机器上执行:
# 登录仓库
docker login harbor.您的域名.com
# 输入:admin 及密码
# 为镜像打标签(请替换为您的项目和镜像)
docker tag nginx:alpine harbor.您的域名.com/我的项目/nginx:alpine
# 推送镜像
docker push harbor.您的域名.com/我的项目/nginx:alpine
镜像会出现在 Harbor 界面的项目中。若已启 用 Trivy,可自动或手动执行 扫描 以查看漏洞(CVE)。
Harbor 还支持存储 Helm 图表(OCI 格式)。将 Helm 配置为使用 Harbor 仓库后,可在同一项目中通过 helm push / helm pull 推送和拉取图表。这样,一个 OCI 仓库即可集中管理您的 Docker 镜像 和用于 Kubernetes 的 Helm 图表。
管理与停止 Harbor
容器由 Docker Compose 在 /opt/harbor 下管理:
cd /opt/harbor
# 查看容器
sudo docker compose ps
# 停止 Harbor
sudo docker compose down
# 重启 Harbor
sudo docker compose up -d
故障排除
Harbor 页面无法打开或 HTTPS 报错
- 确认
harbor.yml中的 hostname 与浏览器中使用的域名及证书 通用名 完全一致。 - 检查证书路径:
sudo ls -la /etc/letsencrypt/live/harbor.您的域名.com/ - 查看日志:
cd /opt/harbor && sudo docker compose logs -f proxy
容器无法启动
- 查看日志:
cd /opt/harbor && sudo docker compose logs - 检查磁盘空间:
df -h(Harbor 与镜像需要足够空间) - 确认 80 和 443 端口未被其他服务占用:
ss -tlnp | grep -E ':80|:443'
Docker login 失败(x509、证书)
- 在开发环境中,可在
/etc/docker/daemon.json中将该仓库设为 insecure(生产环境不推荐)。 - 在生产环境中,请确保 Let's Encrypt 证书有效且 Docker 客户端信任该 CA(使用 Let's Encrypt 时通常如此)。