linux部署harbor需确保docker≥20.10、docker compose v2≥2.0.0、openssl已安装;修改harbor.yml的hostname、https配置(或禁用)及data_volume路径权限;启动失败优先排查harbor-db容器状态与磁盘空间及属主;客户端push前须将ca.crt放入/etc/docker/certs.d/{host}:443并重启docker。

Linux 部署 Harbor 实现私有镜像存储管理,核心在于环境就绪、配置精准、服务可控。它不是“解压即用”的工具,而是一套依赖明确、证书强制、权限敏感的容器化平台。部署成功与否,90%取决于前期检查是否到位。
确认三个硬性依赖是否真正可用
Harbor 启动失败,多数情况并非配置错误,而是基础依赖缺失或版本不兼容:
-
Docker ≥ 20.10:运行
docker --version确认;旧版(如 18.09)易触发 endpoint 创建失败 -
Docker Compose v2 ≥ 2.0.0:必须用
docker compose version(注意无连字符)验证;若提示 command not found,需从 GitHub 下载二进制并放入/usr/local/bin/ -
OpenSSL 已安装:执行
which openssl应有输出;CentOS/RHEL 最小化安装常遗漏,补装命令:yum install -y openssl
修改 harbor.yml 的三个关键位置
离线包解压后,harbor.yml 必须调整以下三项,否则无法登录、无法访问或数据写入失败:
-
hostname:设为客户端可解析的值,例如
harbor.example.com或宿主机真实 IP(如192.168.10.50),严禁使用localhost或127.0.0.1 -
HTTPS 配置:生产环境启用 HTTPS,需配置
https.port、certificate和private_key路径;测试环境禁用 HTTPS,须注释整个https:块,并设置http.port: 8080和https.enabled: false -
data_volume 路径与权限:建议改到独立磁盘路径(如
/opt/harbor-data),然后执行:chown -R 10000:10000 /opt/harbor-data(Harbor 容器默认以 UID 10000 运行)
启动失败时优先排查数据库容器
执行 ./install.sh 后,若 harbor-core 或 harbor-jobservice 状态为 Exited (1),大概率是 harbor-db 未启动成功:
- 查状态:
docker inspect harbor-db | grep -A 5 "Status",若显示"ExitCode": 1,说明数据库启动失败 - 常见原因:宿主机磁盘空间不足(尤其
/data/database所在分区),或该目录属主不是 UID 10000 - 快速修复:
chown -R 10000:10000 /data/database,再清理旧容器重试:docker-compose down -v && ./install.sh
客户端能 push 镜像的前提是信任证书
启用 HTTPS 后,Docker 客户端默认不信任自签名证书,push 会报 x509 certificate signed by unknown authority:
- 将 Harbor 生成的
ca.crt(通常在/data/cert/)复制到客户端机器 - 放入 Docker 信任目录:
sudo mkdir -p /etc/docker/certs.d/{your-harbor-host}:443,然后sudo cp ca.crt /etc/docker/certs.d/{your-harbor-host}:443/ca.crt - 重启 Docker:
sudo systemctl restart docker











