【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: 443
  certificate: /opt/harbor/certs/harbor.host3.crt
  private_key: /opt/harbor/certs/harbor.host3.key

harbor_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重启 Docker
          sudo 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 [email protected]:/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

5.Docker 客户端拉取镜像 pull

默认情况下,只有 root 用户或 docker 组用户可以直接操作 Docker。将普通用户加入 docker 组:

复制代码
# 将用户 vagrant 加入 docker 组
sudo usermod -aG docker vagrant

# 生效组权限(需重新登录用户或重启会话)
newgrp docker  # 或退出终端重新登录

验证权限:

复制代码
vagrant@host1:~$ docker ps  # 不再需要 sudo

pull

复制代码
# 登录 Harbor(使用普通用户的凭据)
docker login harbor.host3 -u admin -p Harbor12345

# 尝试拉取镜像(使用 Tag)
vagrant@host1:~$ docker pull harbor.host3/ruoyi/ry-mysql:1.0

# 或使用摘要(需替换实际值,可在harbor仓库中复制)
vagrant@host1:~$ docker pull harbor.host3/ruoyi/ry-mysql@sha256:d36f20e4dcae4c69...

Harbor 核心功能与使用指南


一、Harbor 与传统 Docker Registry 的核心优势

  1. 企业级功能支持
    • 基于角色的访问控制(RBAC):支持项目级别的权限管理(如管理员、开发者、访客角色),可精细控制用户对镜像的读写权限。
    • 镜像复制与同步:支持跨 Harbor 实例的镜像自动同步,适用于混合云或多数据中心场景。
    • 漏洞扫描与安全审计:集成 Trivy 等工具自动扫描镜像漏洞,并记录所有操作日志用于审计。
    • LDAP/AD 集成:可直接对接企业已有的 LDAP/AD 系统,统一用户认证。
  2. 易用性与扩展性
    • 图形化界面(Web UI):提供直观的镜像管理、项目配置和用户权限设置界面。
    • RESTful API:支持自动化集成到 CI/CD 流程中,例如通过 API 创建项目或管理镜像。
    • 多存储后端支持:支持本地存储、S3、Ceph 等存储方案,适应不同规模的部署需求。
  3. 与 Kubernetes 生态的深度集成
    Harbor 可无缝对接 Kubernetes,作为私有镜像仓库,支持 Helm Chart 存储(需启用 ChartMuseum)。

二、Harbor 的核心使用场景

  1. 企业内部镜像管理
    • 统一存储企业内部开发的 Docker 镜像,避免依赖公共仓库。
    • 通过项目隔离不同团队的镜像资源,例如 project-frontendproject-backend
  2. 混合云镜像分发
    • 在多个 Harbor 实例间配置镜像复制策略,实现跨云或跨地域的镜像同步。
  3. 安全合规与审计
    • 扫描生产环境镜像的漏洞,记录操作日志以满足合规要求。

三、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 维护与管理

  1. 日志与监控
    • 日志收集 :Harbor 日志默认存储在 /var/log/harbor,可通过 ELK 或 Prometheus 集成实现集中监控。
    • 服务状态检查 :使用 docker-compose ps 查看容器运行状态。
  2. 备份与恢复
    • 数据备份 :定期备份 Harbor 数据库 (harbor-db) 和存储卷 (/data/harbor)。
    • 配置文件备份 :保存 harbor.yml 和证书文件,便于快速恢复。
  3. 升级与扩展
    • 版本升级 :下载新版本安装包,运行 ./prepare./install.sh,注意迁移旧数据。
    • 高可用部署:通过 Redis 集群和 Ceph 存储实现 Harbor 组件的高可用。
  4. 安全维护
    • 定期更新证书:自签名证书需每年更新,避免服务中断。
    • 漏洞扫描策略:配置定时扫描任务,拦截高风险镜像。

六、常见问题解决

  1. 拉取镜像超时
    • 检查网络:确保防火墙开放 443 端口(HTTPS)或 80 端口(HTTP)。
  2. Web UI 无法访问
    • 服务状态 :运行 docker-compose logs 查看 Nginx 或 Core 服务日志。

七、总结

Harbor 是企业级容器镜像管理的首选工具,其核心价值在于 安全性可扩展性易用性。通过合理配置镜像推送、权限管理和存储后端,可大幅提升 DevOps 流程的效率。维护时需重点关注日志监控、备份策略和高可用部署,确保服务稳定

相关推荐
码码哈哈0.03 小时前
2025最新:3分钟使用Docker快速部署Redis集群
redis·docker·容器
韩先超7 小时前
2022年8月,韩先超对中移信息进行微服务架构原理(Docker+k8s+DevOps+Go等)培训
docker·微服务·kubernetes·devops
码上飞扬7 小时前
深入理解 Docker 网络原理:构建高效、灵活的容器网络
docker
秋说9 小时前
监控系统进阶方案:OpenObserve的Docker部署与远程访问配置指南
运维·docker·容器
妖果yaoyao10 小时前
docker 部署clickhouse
clickhouse·docker·容器
江湖人称小鱼哥11 小时前
docker安装flowable ui
ui·docker·容器
weixin_4458528811 小时前
Docker部署常见应用之Superset
运维·docker·容器
Roc.Chang12 小时前
理解与清理 Docker 中的悬空镜像(Dangling Images)
运维·docker·容器