docker部署harbor本质是通过docker-compose编排registry、core、proxy、db等多容器协同运行的集群,需满足docker≥20.10、compose≥2.20、4gb+内存、独立存储及selinux调优等前置条件,配置harbor.yml后执行install.sh完成部署。

用Docker容器部署Harbor,本质是通过docker-compose编排其多个核心服务组件(如Registry、Core、Proxy、DB、Log等),实现开箱即用的企业级镜像管理。它不是单个容器,而是一套协同运行的容器集群,部署关键在于配置准确、依赖完备、网络与存储规划合理。
环境准备与前置条件
Harbor对底层环境有明确要求,不满足会导致启动失败或功能异常:
- Docker引擎 ≥ 20.10,且已启用systemd服务并正常运行
- Docker Compose ≥ 2.20(推荐使用v2原生模式,非docker-compose-plugin旧版)
- 至少4GB内存(生产环境建议8GB+),CPU双核起
- 独立数据盘挂载点(如
/data),用于持久化镜像、数据库、日志和证书 - 关闭SELinux或配置为permissive模式(CentOS/RHEL系需特别注意)
- 确保
iptables或nftables未拦截180/443/4443等Harbor默认端口
下载、配置与安装流程
以最新稳定版Harbor(如v2.10.x)为例,操作简洁清晰:
- 从GitHub Releases下载离线包(推荐):
wget https://www.php.cn/link/ba07080c294e947a3fe56de53d907f9e/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz - 解压并进入目录:
tar -xvf harbor-offline-installer-*.tgz && cd harbor - 复制模板配置文件:
cp harbor.yml.tmpl harbor.yml - 编辑
harbor.yml,重点修改以下几项:
–hostname:设为可解析的域名或内网IP(严禁用localhost)
–http.port:如用HTTP,保留80;如启HTTPS,取消https段注释并填入证书路径
–harbor_admin_password:设强密码(至少12位,含大小写字母+数字+符号)
–data_volume:指向你准备好的持久化路径(如/data/harbor)
–database.password与redis.password:建议显式设置,避免默认弱口令 - 执行安装:
sudo ./install.sh --with-notary --with-clair(启用镜像签名与漏洞扫描)
首次访问与基础运维操作
安装成功后,Harbor自动启动6–7个容器,可通过docker-compose ps确认状态:
- 浏览器访问
http://<your-hostname></your-hostname>,用admin+ 配置的密码登录 - 创建第一个项目(Project),例如
prod-apps,勾选“公开”或“私有”,设定存储配额 - 客户端推送镜像前,先配置Docker信任该仓库:
编辑/etc/docker/daemon.json,加入:"insecure-registries": ["your-hostname:80"](HTTP场景)或配置TLS证书(HTTPS场景)
然后重启Docker:sudo systemctl restart docker - 推送示例:
docker tag nginx:alpine your-hostname/prod-apps/nginx:1.25docker login your-hostnamedocker push your-hostname/prod-apps/nginx:1.25 - 日常运维命令:
– 停止:docker-compose down
– 重启全部:docker-compose up -d
– 查看日志:docker-compose logs -f core(聚焦核心服务)
– 清理无引用镜像:docker exec -it harbor-core /harbor/prepare --with-notary --with-clair配合UI中“垃圾回收”手动触发
安全加固与长期维护要点
上线后必须立即处理的关键项,否则存在明显风险:
- 强制启用HTTPS:生成或导入由企业CA签发的证书,替换
harbor.yml中https段配置,并重启 - 禁用默认admin账户的长期使用:创建专属管理员账号,将admin降权为普通项目维护者
- 开启LDAP/AD集成(如有):在UI【系统管理 → 认证模式】中切换,避免本地密码分散管理
- 定期执行镜像扫描:在项目设置中启用“自动扫描”,结合Clair或Trivy插件识别CVE
- 备份关键数据:每日定时备份
/data/database(PostgreSQL)、/data/registry(镜像层)、/data/secretkey及harbor.yml配置文件 - 版本升级:遵循官方升级路径,通常需停机、备份、运行迁移脚本、重装











