harbor启动失败应先查容器状态,再聚焦core.log等组件日志,最后检查docker/containerd服务及网络配置:用docker-compose ps看harbor-core等状态,tail -n 50 /var/log/harbor/core.log查错误,systemctl status docker和journalctl -u docker.service -n 50定位底层异常。
harbor 启动失败时,系统日志是定位问题的第一手依据。重点不是“看所有日志”,而是按顺序查关键路径:先确认容器是否真正启动,再聚焦核心组件日志,最后回溯宿主机级依赖服务。
查 Harbor 容器状态与核心组件运行情况
执行 docker-compose ps 或 docker ps -a,观察以下容器状态:
-
harbor-core:认证、权限、API 入口,若为
Restarting或Exited,说明服务未正常初始化 - harbor-db(PostgreSQL)和 harbor-redis:core 依赖它们启动,任一不可用都会导致 core 崩溃
- nginx:若运行但 core 不可用,Web 页面可能显示 502,但登录 API 实际已中断
读取 Harbor 自身日志文件
日志默认在宿主机的 /var/log/harbor/ 目录下,按组件分文件,优先查看:
-
core.log:最核心——包含 JWT 验证失败、数据库连接超时、配置加载异常等直接报错 -
postgresql.log:检查是否有could not connect to server或初始化失败提示 -
redis.log:关注是否拒绝连接(如Connection refused),常因 redis 容器未就绪或端口被占
用 tail -n 50 /var/log/harbor/core.log 快速抓取最新错误行,避免滚动大量 INFO 日志。
检查 Docker 和 containerd 底层状态
Harbor 是容器化应用,其失败常源于宿主机运行时异常:
- 执行
systemctl status docker和systemctl status containerd,确认两者 Active: active (running) - 若 docker 报
failed (Result: exit-code),立即运行journalctl -u docker.service -n 50查真实原因,常见如:
–cannot create network "docker0": conflicts with existing network(桥接冲突)
–pid file found, ensure docker is not running or delete /var/run/docker.pid(异常关机残留)
验证网络与配置一致性
很多“启动成功但无法访问”实际是配置不匹配导致的静默失败:
- 确认
harbor.yml中hostname值与你实际访问的域名/IP 完全一致(不能是 localhost,也不能带端口) - 若启用了 HTTP(非 HTTPS),检查
insecure-registries是否已写入/etc/docker/daemon.json并执行了systemctl restart docker - 用
curl -v http://<your-hostname>/api/v2.0/ping</your-hostname>测试 nginx 是否转发到 core,返回200 OK才算通路完整











