Skip to main content

安装 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 进行漏洞扫描,支持 RBACOIDC/LDAP 以及仓库间 复制

本文描述的部署使用 官方安装程序(Docker Compose)在 VM 或专用服务器上运行,配合 HTTPSLet's Encrypt 证书。

订购服务器

要托管 Harbor 实例,HostMyServers 提供多种方案:

前提条件

  • 以 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 GB8 GB
CPU2 核4 核
存储40 GB160 GB
网络100 Mbps1 Gbps
生产环境使用 HTTPS

在生产环境中,务必使用有效证书(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_passwordadmin 账号密码(首次登录后修改)
data_volumeHarbor 数据存储目录
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

  1. 在浏览器中打开:https://harbor.您的域名.com
  2. 使用默认账号登录:admin / 在 harbor_admin_password 中设置的密码
  3. 立即修改管理员密码:管理用户 → 编辑 admin 账号
  4. 创建一个 项目(例如 我的项目)用于推送镜像

向 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 时通常如此)。

参考