游乐游手机版
首页/系统平台/文章详情

Linux部署Harbor私有镜像仓库安装与证书配置教程

时间:2026-06-15 07:47
在部署Harbor私有镜像仓库并启用HTTPS时,许多用户常常遇到“安装脚本执行成功,但网页无法访问”或“docker login失败”等问题。实际上,这些问题的根本原因往往不在Harbor本身,而是由于几个前置依赖和配置细节未能严格对齐。本文将逐一解析这些常见陷阱,帮助您顺利部署。 首先需要明确一

在部署Harbor私有镜像仓库并启用HTTPS时,许多用户常常遇到“安装脚本执行成功,但网页无法访问”或“docker login失败”等问题。实际上,这些问题的根本原因往往不在Harbor本身,而是由于几个前置依赖和配置细节未能严格对齐。本文将逐一解析这些常见陷阱,帮助您顺利部署。

linux环境下部署 harbor 私有镜像仓库 详细安装与证书配置

首先需要明确一个关键前提:docker 版本必须 ≥ 20.10,docker compose 版本必须 ≥ 2.0.0,且 openssl 必须正常可用。这三项条件缺一不可,否则即使 ./install.sh 脚本执行完毕,Harbor 也很可能无法正常启动。请务必不要跳过验证步骤。

确认三个核心依赖是否就位

许多“安装成功但服务异常”的案例,本质上源于依赖版本不匹配。这并不是“版本稍低也能凑合”的问题,因为 Harbor v2.9 及以上版本已明确拒绝旧版 docker-compose(v1.x)以及低于 20.10 的 Docker 引擎。

具体如何核实?

  • Docker 版本:运行 docker --version,输出必须是 Docker version 20.10.x 或更高。如果显示的是 18.09 这类旧版本,后续执行 docker info 时很可能会报 failed to create endpoint 等错误。
  • Docker Compose 版本:请格外注意,此处指的是新版插件形式的 docker compose(中间无连字符)。运行 docker compose version,应输出类似 Docker Compose version v2.27.1。如果提示 command not found,说明系统里安装的仍是 Python 版的 docker-compose(v1),需要手动下载二进制文件并放到 /usr/local/bin/ 目录下。
  • OpenSSL 可用性:执行 which openssl,需返回有效路径。在 CentOS/RHEL 等系统的最小化安装中,openssl 包常被遗漏,只需运行 yum install -y openssl 即可补装。

离线安装包解压后必须改的三项配置

在正式运行 ./install.sh 之前,harbor.yml 配置文件中有三项配置必须修改,否则后续 docker login 失败或页面 502 错误几乎不可避免。

  • hostname:这里不能简单设为 localhost127.0.0.1,必须填写客户端(包括浏览器和 Docker 客户端)能够解析的地址。例如服务器的 IP 地址 192.168.88.240,或者已配置的域名 harbor.example.com。关键原则:浏览器访问的 URL、docker login 时使用的地址、以及证书中的 CN 字段,这三者必须完全一致
  • https 配置块:生产环境强烈建议启用 HTTPS。如果仅在测试环境使用 HTTP,需将 https: 及其下方所有配置行整段注释掉,并确保配置文件顶部有 https.enabled: false 的明确设置。同时,记得将 http.port 从默认的 80 端口改为其他端口(例如 8080),否则若宿主机 80 端口已被占用,Harbor 的 HTTP 服务将无法监听。
  • data_volume:默认数据目录为 /data。若系统盘空间紧张,建议调整至独立且空间充足的路径,如 /opt/harbor-data。修改后,务必执行 chown 10000:10000 /opt/harbor-data 命令,因为 Harbor 容器以 UID 10000 的用户运行,目录权限不当会导致 harbor-db 等核心组件无法启动。

自签名证书生成与挂载路径要严格匹配

这是 HTTPS 配置中最易出错的环节。Harbor 启动时会严格按照 harbor.ymlcertificateprivate_key 指定的路径读取证书文件。路径中多一个字符、文件权限不正确或证书 CNhostname 不一致,都会直接导致 harbor-portal 服务无法响应,浏览器报 NET::ERR_CERT_COMMON_NAME_INVALID 错误。

具体需要注意以下几点:

  • 证书主题(CN)必须匹配:生成证书时,-subj "/CN=xxx" 中的 xxx 必须和 harbor.yml 里的 hostname 一字不差。如果使用 IP 地址访问,还需要在生成命令中添加 -addext "subjectAltName = IP:192.168.88.240" 这样的扩展字段。
  • 证书路径必须正确且可访问:证书文件路径必须是容器内可读的绝对路径,例如 /usr/local/harbor/tls/cert.crt。如果你把证书放在了 /root/tls/ 这类默认容器无权访问的目录,要么通过 volume 映射进容器,要么提前将证书文件移动到 Harbor 安装目录下。
  • 私钥文件权限必须是 600:执行 chmod 600 tls/cert.key,将私钥文件权限设置为 600。如果权限不对,nginx 容器会在启动时拒绝加载私钥,日志中会出现 SSL_CTX_use_PrivateKey_file failed 的错误。

启动失败时优先查这三个日志位置

当通过 docker ps -a 发现容器状态为 Exited (1) 时,不必急于重装整个 Harbor。按以下顺序排查,通常能快速定位问题。

  1. 查看 harbor-core 日志:运行 docker logs harbor-core(注意不要加 -f,因为它已经退出了)。一个高频错误是 failed to connect to database: dial tcp 127.0.0.1:5432,这通常意味着 harbor-db 数据库容器没有成功启动。
  2. 检查 harbor-db 状态:运行 docker inspect harbor-db | grep -A 5 "Status"。如果显示 "ExitCode": 1,接着检查两个方向:一是磁盘空间是否充足(df -h /data),二是数据目录的权限是否正确(ls -ld /data/database 的属主必须是 10000)。
  3. 确认 harbor-portal 是否在监听端口:运行 ss -tlnp | grep ':80\|:443',查看 80 或 443 端口是否有进程在监听。如果没有输出,很可能是防火墙挡住了,需要检查并放行相应端口:在 CentOS/RHEL 上使用 firewall-cmd --list-ports,在 Ubuntu 上使用 ufw status

总而言之,证书路径、hostname 一致性以及 UID 目录权限这三点,任一配置错误都可能导致 Harbor 启动后立即崩溃。同时,错误日志分散在不同容器中,容易造成误判。因此,部署前务必逐行核对上述配置,这将为您节省大量排错时间。

来源:https://www.php.cn/faq/2357312.html
上一篇Linux系统二进制文件被篡改检查方法 下一篇麒麟操作系统安装Chrome浏览器详细完整步骤教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
麒麟系统字体太小看不清如何调整界面字体大小
系统平台 · 2026-07-01

麒麟系统字体太小看不清如何调整界面字体大小

麒麟系统高分屏字体过小需分层干预:控制中心调整缩放至150%或200%,辅助功能增大文本,命令行设置MateDPI值(2K设200 0,4K设220 0),QT类软件用环境变量QT_DEVICE_PIXEL_RATIO=2,终端取消使用系统等宽字体并改字号,输入法候选字体调至16或18。

Win11记事本默认不换行如何设置为自动换行
系统平台 · 2026-07-01

Win11记事本默认不换行如何设置为自动换行

Windows11记事本默认不自动换行,手动开启仅对当前窗口有效。若要永久启用,可修改注册表,在HKCU Software Microsoft Notepad路径下新建DWORD值fWrap并设为1,或导入含此设置的 reg文件,此后所有新建记事本文件均自动换行显示,无需重复手动操作,一劳永逸。

银河麒麟系统时间快几分钟的调整方法
系统平台 · 2026-07-01

银河麒麟系统时间快几分钟的调整方法

银河麒麟系统时钟快几分钟的解决方法:先用date命令校正系统时间,再执行hwclock--systohc写入硬件时钟;启用systemd-timesyncd并配置阿里云NTP服务器;禁用chronyd避免服务冲突;双系统用户需设置硬件时钟为UTC模式。

Win11多屏下设置软件只在特定屏幕打开的方法
系统平台 · 2026-07-01

Win11多屏下设置软件只在特定屏幕打开的方法

双屏办公时,通过快捷方式添加启动参数、利用Windows窗口位置记忆功能或PowerShell脚本,可让软件自动在副屏打开,免去手动拖拽,提升工作效率。

MacBook如何取消菜单栏蓝牙搜索状态
系统平台 · 2026-07-01

MacBook如何取消菜单栏蓝牙搜索状态

在macOS中,进入系统设置“控制中心”,将蓝牙设为“不显示在菜单栏”即可隐藏图标且功能正常;旧版系统则在蓝牙偏好设置中取消勾选“在菜单栏中显示”。