上周我们介绍了Harbor开源企业级容器Registry的架构,获得了社区很多朋友的反馈和建议,再次一并感谢,希望和大家一起,共同建设一个优秀的开源项目。本文请Harbor项目工程师尹文开介绍源码结构,帮助开发和运维人员理解代码的工作原理。
本文主要介绍Harbor项目的源码结构,帮助开发和运维人员理解其工作原理。
Proxy提供反向代理服务,用户的不同请求由Proxy分发到后端的UI或者Registry。Harbor中使用的是官方的nginx镜像。
Core Services是Harbor项目的核心组件,主要提供权限管理、审计、管理界面UI、token service以及可供其他系统调用的API等功能。
Database提供数据持久化服务,采用了官方的mysql镜像。
Registry是Docker官方的开源的Registry镜像,主要提供镜像的存储和分发功能。
Log Collector负责收集其他容器的日志并进行日志轮转。
各个容器之间的关系如下图所示:
| -- api (Harbor提供的外部调用的API)
| -- auth (认证模块,目前提供两种方式:数据库和LDAP)
| -- db (数据库认证)
| -- ldap (LDAP认证)
Harbor项目概览
容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,在企业私有环境内部署的Registry服务是非常必要的。Harbor( https://github.com/vmware/harbo r)是由VMware中国研发团队为企业用户设计的Registry Server开源项目,包括了权限管理(RBAC)、图形管理界面、LDAP/AD集成、审计、自我注册、HA等企业必需的功能,同时针对中国用户的特点,原生支持中文,并计划实现镜像复制(roadmap)等功能。本文主要介绍Harbor项目的源码结构,帮助开发和运维人员理解其工作原理。
主要组件
Harbor系统由五个容器组成:Proxy、Core Services(包含UI, tokenservice和webhook)、Database、Registry和Log Collector。Proxy提供反向代理服务,用户的不同请求由Proxy分发到后端的UI或者Registry。Harbor中使用的是官方的nginx镜像。
Core Services是Harbor项目的核心组件,主要提供权限管理、审计、管理界面UI、token service以及可供其他系统调用的API等功能。
Database提供数据持久化服务,采用了官方的mysql镜像。
Registry是Docker官方的开源的Registry镜像,主要提供镜像的存储和分发功能。
Log Collector负责收集其他容器的日志并进行日志轮转。
各个容器之间的关系如下图所示:

源码结构
以下所述主要为Core Services组件的源码结构,通过根目录下的Dockerfile可以构建出Core Services的镜像。另外Deploy目录下的db和log分别对应Database和Log Collector的Dockerfile镜像构建文件,而Nginx和Registry则都是采用的官方镜像。| -- api (Harbor提供的外部调用的API)
| -- auth (认证模块,目前提供两种方式:数据库和LDAP)
| -- db (数据库认证)
| -- ldap (LDAP认证)