Harbor不能通过yum或apt安装,必须下载离线包、配置harbor.yml并运行./install.sh;需确保docker≥24.0.7、docker compose≥v2.24.5,hostname与证书CN及客户端访问地址严格一致。

Harbor 不能用 yum install harbor 或 apt install harbor 直接装——它没有系统包,必须手动下载离线包、配 harbor.yml、再运行 ./install.sh。跳过这一步,90% 的安装失败都源于此。
docker 和 docker-compose 版本不兼容会直接卡在启动阶段
Harbor v2.10+ 要求 docker ≥ 24.0.7、docker compose(注意是空格,不是连字符)≥ v2.24.5。旧版本常见报错:failed to create endpoint 或 command not found: docker-compose。
- 用
docker --version和docker compose version双重验证(不是docker-compose --version) - CentOS 最小化安装常缺
openssl,which openssl返回空就立刻yum install -y openssl - 如果
docker compose version报错,说明你装的是 v1.x(Python 版),得删掉并从 GitHub releases 下载二进制:sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
harbor.yml 中 hostname 和证书必须严格一致
填 localhost 或 127.0.0.1 会导致 docker login 报 unauthorized: authentication required;浏览器访问时 URL 必须和 hostname 字段完全一致,否则证书校验失败,Chrome 会直接拦截。
-
hostname必须设为客户端能解析的值,比如192.168.10.50或harbor.example.com - 自签名证书生成时,
subj "/CN=localhost"这行里的localhost必须替换成你实际设的hostname值,否则证书域名不匹配 - 若仅测试,可整段注释掉
https:块,并设http.port: 8080,同时确保https.enabled: false
容器反复退出时优先查 harbor-db 和权限
docker ps -a 看到 harbor-core 或 harbor-jobservice 状态是 Exited (1),大概率是数据库没起来,而不是配置写错了。
- 先查
harbor-db容器状态:docker inspect harbor-db | grep -A 5 "Status",若"ExitCode": 1,重点看磁盘空间和目录权限 -
/data/database(或你改过的data_volume路径)必须属主 UID 10000:sudo chown -R 10000:10000 /data/database - 宿主机防火墙常拦默认端口:CentOS 用
firewall-cmd --add-port=443/tcp --permanent && firewall-cmd --reload
客户端 push 镜像失败多数因为证书信任链没打通
即使 Harbor 页面能打开、docker login 成功,push 仍可能报 x509 certificate signed by unknown authority ——这是 Docker daemon 没信任你的 CA 证书,不是浏览器问题。
- 把生成的
ca.crt复制到客户端机器:/etc/docker/certs.d/<hostname>:<port>/ca.crt</port></hostname>(例如/etc/docker/certs.d/192.168.10.50:443/ca.crt) - 路径中的
<hostname>:<port></port></hostname>必须和你docker login时用的完全一致 - 改完记得重启 Docker:
sudo systemctl restart docker
最容易被忽略的是:证书 CN、harbor.yml 中的 hostname、客户端 docker login 地址、Docker daemon 信任目录路径,这四者必须字面一致。差一个端口、多一个斜杠、IP 和域名混用,都会导致认证链断裂。


















