Harbor私有镜像中心通过docker-compose编排registry、UI、DB、nginx等多容器协同运行,需预先安装Docker(≥20.10)和Docker Compose(≥2.20),配置hostname解析、HTTPS证书及harbor.yml,最后执行install.sh启动并验证。

用Docker容器部署Harbor私有镜像中心,核心是通过docker-compose编排多个服务组件协同运行。它不是单个镜像启动,而是一整套预定义服务(如registry、ui、db、nginx等)的自动化拉起。整个过程清晰可控,重点在于环境准备、配置修改和证书处理。
基础环境与前置依赖
确保主机满足最低要求:
- Docker 版本 ≥ 20.10(推荐 24.x),运行
docker --version验证 - Docker Compose 版本 ≥ 2.20(新版已集成进 Docker CLI,可直接用
docker compose命令) - 关闭防火墙或放行端口:80(HTTP)、443(HTTPS)、4443(Harbor内部通信)
- 禁用 SELinux(
setenforce 0)或设为 permissive 模式 - 配置 hostname 解析:在
/etc/hosts中添加如192.168.50.10 harbor.example.com,避免使用localhost或127.0.0.1
下载安装包并初始化配置
从 GitHub 官方 releases 页面下载最新稳定版(例如 v2.10.2):
wget https://github.com/goharbor/harbor/releases/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz tar -xvf harbor-offline-installer-v2.10.2.tgz cd harbor
重命名模板配置文件:
mv harbor.yml.tmpl harbor.yml
编辑 harbor.yml,关键项包括:
-
hostname:必须填你规划的访问域名或 IP(如harbor.example.com) -
http.port:默认 80;若启用 HTTPS,需取消https区块注释,并指定证书路径 -
harbor_admin_password:设置强密码(首次登录 admin 账户用) -
database.password:数据库 root 密码(可保持默认,也可自定义) -
data_volume:指定持久化目录(如/data/harbor),确保磁盘空间充足
启用 HTTPS(生产环境强烈建议)
不配 HTTPS 时,Docker 客户端会报 x509 certificate signed by unknown authority 错误,必须额外配置 --insecure-registry,既不安全又繁琐。
推荐生成自签名证书(测试可用)或使用企业签发/Let’s Encrypt 证书:
- 创建证书目录:
mkdir -p /data/cert - 生成私钥和证书(以域名
harbor.example.com为例):
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/harbor.key \ -x509 -days 3650 -out /data/cert/harbor.crt \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/CN=harbor.example.com"
然后在 harbor.yml 中启用 HTTPS:
https: port: 443 certificate: /data/cert/harbor.crt private_key: /data/cert/harbor.key
启动 Harbor 并验证
执行安装脚本:
sudo ./install.sh
成功输出类似:
✔ ----Harbor has been installed and started successfully.----查看容器状态:
docker ps -a | grep -E "(harbor|nginx|registry)"
浏览器访问 https://harbor.example.com(或 http://harbor.example.com),用 admin 和你设置的密码登录。首页显示项目列表即表示服务就绪。
在客户端机器上测试推送:
docker login harbor.example.com docker tag nginx:alpine harbor.example.com/library/nginx:alpine docker push harbor.example.com/library/nginx:alpine
成功后可在 Web 界面「Projects → library → Repositories」中看到该镜像。


















