高效管理 Docker 容器应用离不开可靠的镜像仓库。但出于安全管控、提升效率(尤其解决网络访问限制)等需求,部署私有镜像仓库势在必行。Harbor 是企业级私有 Docker Registry 的优选方案。它在开源 Registry 基础上,提供了强大的管理功能:基于角色的访问控制(RBAC)、镜像漏洞扫描、LDAP/AD 集成、镜像复制策略、空间清理、直观的管理 UI 和审计日志等。这些特性使其能有效管理敏感镜像并提升运维效率。
1.harbor介绍
Harbor 是由 VMware 开源并捐赠给 CNCF 的企业级容器镜像仓库,提供镜像存储、安全扫描、权限管理和跨环境复制等核心功能,已成为私有化容器管理的标准解决方案。其核心优势在于强大的企业级安全能力,包括集成漏洞扫描工具(如 Trivy/Clair)、内容签名验证和细粒度 RBAC 权限控制,支持无缝对接 LDAP/AD 认证体系;同时具备高效的运维特性,例如跨数据中心镜像同步和自动化垃圾回收机制,大幅简化分布式架构下的镜像治理。作为开源生态的关键组件,Harbor 深度集成 Kubernetes 并支持 Helm Chart 等云原生制品管理,满足 DevOps 全流程需求。然而,Harbor 的部署复杂度较高,依赖 PostgreSQL、Redis 等多组件协同,初始配置和维护成本显著高于轻量级仓库(如 Docker Registry);其资源消耗也相对较大,对硬件要求更为严格,且部分高级功能(如多集群复制策略)对小型团队可能造成冗余。综合而言,Harbor 尤其适合中大型企业构建安全合规、多环境协同的镜像供应链,但在资源有限或功能需求简单的场景下,需谨慎评估其运维开销。

以下是harbor的各个组件
组件名称 | 核心作用 | 关键功能说明 | 端口/依赖 |
---|---|---|---|
harbor-core | Harbor 核心服务 | 提供 API 接口、用户权限管理、项目配置、Webhook 等核心逻辑 | 依赖 harbor-db 和 redis |
harbor-db | 元数据存储数据库 | 存储用户信息、项目数据、镜像元数据、复制策略等(PostgreSQL) | 健康状态表明数据服务正常 |
harbor-jobservice | 异步任务处理器 | 执行镜像复制、垃圾回收、漏洞扫描等后台任务 | 通过 redis 协调任务队列 |
harbor-log | 集中式日志收集器 | 聚合所有组件日志,提供统一查询接口 | 127.0.0.1:1514→10514/tcp |
harbor-portal | Web 用户界面 (UI) | 提供图形化管理界面(基于 Vue.js),操作镜像、项目、用户等 | 由 nginx 代理访问 |
nginx | 反向代理和入口网关 | 接收外部请求,路由到后端服务(核心/UI/注册表) | 对外端口: HTTP: 14080 HTTPS: 14443 |
redis | 缓存与会话存储 | 缓存数据库查询、存储用户会话、管理任务队列 | 加速系统性能 |
registry | Docker 镜像存储服务 | 实际存储镜像文件(Blobs)和清单(Manifests) | 依赖存储卷持久化数据 |
registryctl | 注册表控制服务 | 管理 registry 组件(触发垃圾回收、配置更新等操作) | 与 registry 交互 |
2.harbor安装
到github找到最新版的安装包:https://github.com/goharbor/harbor/releases 下载最新版本的harbor-offline-installer-(版本号).tgz安装包。
解压下载好的离线安装包:
tar -xvf harbor-offline-installer-v2.13.1.tgz
进入harbor安装目录,修改配置文件
cd harbor
#复制 harbor的配置文件并改名harbor.yml
cp -ar harbor.yml.tmpl harbor.yml
#修改文件
vim harbor.yml
修改以下内容(建议使用HTTPS):
hostname: #修改成你的域名或者IP地址
port: #端口
certificate: #证书crt路径
private_key: #证书key路径
harbor_admin_password: 123456 # 配置管理员用户的密码
data_volume: /data/harbor #配置持久化路径
注意:使用端口映射可能会导致报错,请勿使用端口映射。
完成并保存配置后执行安装:
# 预处理
./prepare
# 安装Harbor
./install.sh
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating redis ... done
Creating registry ... done
Creating harbor-db ... done
Creating harbor-portal ... done
Creating registryctl ... done
Creating harbor-core ... done
Creating harbor-jobservice ... done
Creating nginx ... done
✔ ----Harbor has been installed and started successfully.----
安装完成后进行检查,然后可以输入刚才设定的地址在浏览器即可访问:
root@k8smgt:~/harbor# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------------------------------
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 14 15 Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:14080->8080/tcp,:::14080->8080/tcp, 0.0.0.0:14443->8443/tcp,:::14443->8443/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
参考文档:https://xie.infoq.cn/article/faa9ee456452891828cc080b8