【Harbor v2.13.0 详细安装步骤 安装证书启用 HTTPS】
Harbor v2.13.0 详细安装步骤(启用 HTTPS)
1. 环境准备
-
系统要求:至少 4GB 内存,100GB 磁盘空间。
-
已安装组件:
- Docker(版本 ≥ 20.10)
- Docker Compose(版本 ≥ v2.0)
-
域名映射:
echo "192.168.0.223 harbor.host3" | sudo tee -a /etc/hosts
2. 下载并解压 Harbor 离线安装包
github下载地址: Release v2.13.0
# 解压到指定目录(如 /opt/harbor)
sudo tar -xzvf harbor-offline-installer-v2.13.0_6.tgz -C /opt
cd /opt/harbor
3. 生成 SSL 证书(自签名)
步骤 1:创建证书目录
sudo mkdir -p /opt/harbor/certs
cd /opt/harbor/certs
步骤 2:生成 CA 根证书
# 生成 CA 私钥
openssl genrsa -out ca.key 4096# 生成 CA 证书(有效期 10 年)
openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.host3" \-key ca.key \-out ca.crt
步骤 3:生成服务器证书
# 生成服务器私钥
openssl genrsa -out harbor.host3.key 4096# 生成证书签名请求(CSR)
openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.host3" \-key harbor.host3.key \-out harbor.host3.csr# 生成证书扩展文件(v3.ext)
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage=serverAuth
subjectAltName=@alt_names[alt_names]
DNS.1=harbor.host3
EOF# 使用 CA 签发服务器证书
openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in harbor.host3.csr \-out harbor.host3.crt
步骤 4:配置证书权限
sudo chmod 644 /opt/harbor/certs/*
4. 配置 Harbor
编辑 harbor.yml
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
# 关键配置项:
hostname: harbor.host3 # 域名
http:#port: 80 # 禁用 HTTP(设为空或注释)
https:port: 443certificate: /opt/harbor/certs/harbor.host3.crtprivate_key: /opt/harbor/certs/harbor.host3.keyharbor_admin_password: Harbor12345 # 管理员密码
database:password: root123 # 数据库密码
data_volume: /data/harbor # 数据存储路径
5. 安装 Harbor
注意检查端口是否占用
# 查看 80 端口占用情况
sudo lsof -i :443
# 或使用 netstat 命令
netstat -tuln | grep 443
# 运行安装脚本(自动启动服务)
sudo ./install.sh --with-trivy
6. 验证安装
检查服务状态
docker compose ps
# 预期输出所有服务状态为 "running"
访问 Harbor Web 界面
- 浏览器访问:
https://harbor.host3
- 用户名:
admin
- 密码:
Harbor12345
解决浏览器证书警告
# 将 CA 证书导入系统信任库(以 Ubuntu 为例)
sudo cp /opt/harbor/certs/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
7. 防火墙配置(如需)
# 开放 443 端口
sudo ufw allow 443/tcp
sudo ufw reload
常见问题解决
1. 常见问题
-
** 证书不信任错误**
-
现象:
x509: certificate signed by unknown authority
-
解决:确保客户端已正确导入 Harbor 的
ca.crt
。 -
#Windows 系统 1.从 Harbor 服务器获取 /opt/harbor/certs/ca.crt 文件,发送到 Windows 客户端 2.打开证书管理器 win+R certmgr.msc 3.导航至 受信任的根证书颁发机构 → 证书,右键选择 所有任务 → 导入,选择 ca.crt 文件完成导入 #Ubuntu/Debian# 1复制证书到系统目录sudo cp ca.crt /usr/local/share/ca-certificates/harbor-ca.crt # 2更新证书库sudo update-ca-certificates # 3重启 Docker(若需通过 Docker 访问 Harbor)sudo systemctl restart docker #CentOS/RedHat# 1复制证书到系统目录sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ # 2更新证书库sudo update-ca-trust # 3重启 Dockersudo systemctl restart docker #macOS 系统导入 CA 证书 #1钥匙串访问工具#双击 ca.crt 文件,选择 系统 钥匙串,点击 添加。#右键证书 → 显示简介 → 信任,设置为 始终信任。 #2终端验证# 检查证书是否生效openssl s_client -connect harbor.host3:443 -showcerts
-
-
DNS 解析失败
-
现象:
Could not resolve host: harbor.host3
-
解决:检查客户端主机的
/etc/hosts
或 DNS 服务器配置。 -
echo "192.168.0.223 harbor.host3" | sudo tee -a /etc/hosts
-
-
IP 访问证书警告
-
现象:访问
https://192.168.0.223
提示证书无效。 -
解决:证书必须包含 IP SAN(即
alt_names
中添加IP.1 = 192.168.0.223
)。 -
现象:浏览器提示 “不安全连接”。
-
解决:将
ca.crt
导入浏览器或系统信任库。
-
2. Harbor 服务未启动
-
检查日志:
tail -f /var/log/harbor/*.log
-
重新部署:
docker compose down -v sudo ./install.sh
3. Docker 客户端信任自签名证书
# 在 Docker 客户端机器操作
sudo mkdir -p /etc/docker/certs.d/harbor.host3
sudo scp root@harbor.host3:/opt/harbor/certs/ca.crt /etc/docker/certs.d/harbor.host3/
sudo systemctl restart docker
# 在 Harbor 服务器检查防火墙规则
sudo ufw allow 443/tcp
sudo ufw reload
4.Docker 客户端推送镜像
# 登录 Harbor
docker login harbor.host3 -u admin -p Harbor12345# 推送测试镜像
docker pull nginx:latest
docker tag nginx:latest harbor.host3/library/nginx:latest
docker push harbor.host3/library/nginx:latest
Harbor 核心功能与使用指南
一、Harbor 与传统 Docker Registry 的核心优势
- 企业级功能支持
- 基于角色的访问控制(RBAC):支持项目级别的权限管理(如管理员、开发者、访客角色),可精细控制用户对镜像的读写权限。
- 镜像复制与同步:支持跨 Harbor 实例的镜像自动同步,适用于混合云或多数据中心场景。
- 漏洞扫描与安全审计:集成 Trivy 等工具自动扫描镜像漏洞,并记录所有操作日志用于审计。
- LDAP/AD 集成:可直接对接企业已有的 LDAP/AD 系统,统一用户认证。
- 易用性与扩展性
- 图形化界面(Web UI):提供直观的镜像管理、项目配置和用户权限设置界面。
- RESTful API:支持自动化集成到 CI/CD 流程中,例如通过 API 创建项目或管理镜像。
- 多存储后端支持:支持本地存储、S3、Ceph 等存储方案,适应不同规模的部署需求。
- 与 Kubernetes 生态的深度集成
Harbor 可无缝对接 Kubernetes,作为私有镜像仓库,支持 Helm Chart 存储(需启用 ChartMuseum)。
二、Harbor 的核心使用场景
- 企业内部镜像管理
- 统一存储企业内部开发的 Docker 镜像,避免依赖公共仓库。
- 通过项目隔离不同团队的镜像资源,例如
project-frontend
和project-backend
。
- 混合云镜像分发
- 在多个 Harbor 实例间配置镜像复制策略,实现跨云或跨地域的镜像同步。
- 安全合规与审计
- 扫描生产环境镜像的漏洞,记录操作日志以满足合规要求。
三、Harbor 镜像推送与拉取操作
1. 推送镜像到 Harbor
-
步骤 1:登录 Harbor
docker login harbor.host3 -u admin -p Harbor12345
注意:若使用自签名证书,需将 CA 证书放入
/etc/docker/certs.d/harbor.host3
。 -
步骤 2:打标签
镜像名称需包含 Harbor 地址和项目名称:docker tag nginx:latest harbor.host3/myproject/nginx:v1
-
步骤 3:推送镜像
docker push harbor.host3/myproject/nginx:v1
2. 从 Harbor 拉取镜像
docker pull harbor.host3/myproject/nginx:v1
3. 镜像管理
-
Web UI 操作:通过浏览器访问
https://harbor.host3
,可在项目中查看、删除镜像或配置复制策略。 -
API 操作:使用 RESTful API 自动化管理,例如列出所有镜像:
curl -X GET "https://harbor.host3/api/v2.0/projects/myproject/repositories" -H "Authorization: Bearer <TOKEN>"
四、Harbor 与其他工具对比
工具 | 优势 | 局限性 |
---|---|---|
Docker Hub | 公共镜像丰富,适合个人开发者 | 缺乏企业级功能,安全性低 |
Nexus 3 | 支持多种仓库类型(Maven、Docker) | Docker 管理功能较 Harbor 弱 |
Harbor | 企业级安全、镜像复制、漏洞扫描 | 部署复杂度较高 |
五、Harbor 维护与管理
- 日志与监控
- 日志收集:Harbor 日志默认存储在
/var/log/harbor
,可通过 ELK 或 Prometheus 集成实现集中监控。 - 服务状态检查:使用
docker-compose ps
查看容器运行状态。
- 日志收集:Harbor 日志默认存储在
- 备份与恢复
- 数据备份:定期备份 Harbor 数据库 (
harbor-db
) 和存储卷 (/data/harbor
)。 - 配置文件备份:保存
harbor.yml
和证书文件,便于快速恢复。
- 数据备份:定期备份 Harbor 数据库 (
- 升级与扩展
- 版本升级:下载新版本安装包,运行
./prepare
和./install.sh
,注意迁移旧数据。 - 高可用部署:通过 Redis 集群和 Ceph 存储实现 Harbor 组件的高可用。
- 版本升级:下载新版本安装包,运行
- 安全维护
- 定期更新证书:自签名证书需每年更新,避免服务中断。
- 漏洞扫描策略:配置定时扫描任务,拦截高风险镜像。
六、常见问题解决
- 拉取镜像超时
- 检查网络:确保防火墙开放 443 端口(HTTPS)或 80 端口(HTTP)。
- Web UI 无法访问
- 服务状态:运行
docker-compose logs
查看 Nginx 或 Core 服务日志。
- 服务状态:运行
七、总结
Harbor 是企业级容器镜像管理的首选工具,其核心价值在于 安全性、可扩展性 和 易用性。通过合理配置镜像推送、权限管理和存储后端,可大幅提升 DevOps 流程的效率。维护时需重点关注日志监控、备份策略和高可用部署,确保服务稳定