一、Harbor概述
Harbor是VMware公司開源的企業級Docker Registry項目,其目标是幫助使用者迅速搭建一個企業級的Docker Registry服務
Harbor以 Docker 公司開源的Registry 為基礎,提供了圖形管理UI、基于角色的通路控制(Role Based AccessControl)、AD/LDAP內建、以及審計日志(Auditlogging)等企業使用者需求的功能,同時還原生支援中文
Harbor的每個元件都是以Docker 容器的形式建構的,使用docker-compose 來對它進行部署。用于部署Harbor 的docker- compose模闆位于harbor/ docker- compose.yml
1、基于角色控制: 使用者和倉庫都是基于項目進行組織的,而使用者在項目中可以擁有不同的權限
2、基于鏡像的複制政策: 鏡像可以在多個Harbor執行個體之間進行複制(同步)
3、支援LDAP/AD: Harbor 可以內建企業内部有的AD/LDAP (類似資料庫的一-張表),用于對已經存在的使用者認證和管理
4、鏡像删除和垃圾回收: 鏡像可以被删除,也可以回收鏡像占用的空間
5、圖形化使用者界面: 使用者可以通過浏覽器來浏覽,搜尋鏡像倉庫以及對項目進行管理
6、審計管理: 所有針對鏡像倉庫的操作都可以被記錄追溯,用于審計管理
7、支援RESTful API: RESTful API提供給管理者對于Harbor 更多的操控,使得與其它管理軟體內建變得更容易
8、Harbor 和docker registry的 關系: Harbor實質 上是對docker registry做 了封裝,擴充了自己的業務模闆
Harbor在架構上主要有Proxy、 Registry、 Core services、 Database (Harbor-db) 、Log collector ( Harbor-log)、Job services六個元件
■ Proxy: Harbor 的Registry、 UI、Token 服務等元件,都處在nginx 反向代理後邊。該代理将來自浏覽器、docker clients的請求轉發到後端不同的服務上
■ Registry:負責儲存Docker 鏡像,并處理Docker push/pull指令。由于要對使用者進行通路控制,即不同使用者對Docker 鏡像有不同的讀寫權限,Registry 會指向一個Token 服務,強制使用者的每次Docker pull/push 請求都要攜帶一個合法的Token,Registry會通過公鑰對Token進行解密驗證
■ Core services: Harbor的核心功能,主要提供以下3個服務:
UI (harbor-ui) :提供圖形化界面,幫助使用者管理Registry. 上的鏡像( image),并對使用者進行授權
WebHook: 為了及時擷取Registry.上image 狀态變化的情況,在Registry. 上配置 Webhook,把狀态變化傳遞給UI子產品
Token 服務:負責根據使用者權限給每個Docker push/pull 指令簽發Token。 Docker 用戶端向Registry服務發起的請求,如果不包含Token,會被重定向到Token服務,獲得Token後再重新向Registry 進行請求
■ Database (harbor-db) :為core services提供資料庫服務,負責儲存使用者權限、審計日志、Docker 鏡像分組資訊等資料
■ Job services: 主要用于鏡像複制,本地鏡像可以被同步到遠端Harbor 執行個體上
■ Log collector (harbor-log) :負責收集其他元件的日志到一個地方
二、Harbor部署
環境準備
Harbor伺服器 192.168.237.10 docker-ce、docker-compose、 harbor-offline-v1.2.2
client伺服器 192.168.237.20 docker-ce
注:這裡部署docker-compose 服務就不示範了
三、 維護管理Harbor