一、介紹
- Harbor,是一個英文單詞,意思是港灣,港灣是干什么的呢,就是停放貨物的,而貨物呢,是裝在集裝箱中的,說到集裝箱,就不得不提到Docker容器,因為docker容器的技術正是借鑒了集裝箱的原理。所以,Harbor正是一個用於存儲Docker鏡像的企業級Registry服務。
- Registry是Dcoker官方的一個私有倉庫鏡像,可以將本地的鏡像打標簽進行標記然后push到以Registry起的容器的私有倉庫中。企業可以根據自己的需求,使用Dokcerfile生成自己的鏡像,並推到私有倉庫中,這樣可以大大提高拉取鏡像的效率。
二、Harbor核心組件解釋
- Proxy:他是一個nginx的前端代理,代理Harbor的registry,UI, token等服務。
- db:負責儲存用戶權限、審計日志、Dockerimage分組信息等數據。
- UI:提供圖形化界面,幫助用戶管理registry上的鏡像, 並對用戶進行授權。
- jobsevice:jobsevice是負責鏡像復制工作的,他和registry通信,從一個registry pull鏡像然后push到另一個registry,並記錄job_log。
- Adminserver:是系統的配置管理中心附帶檢查存儲用量,ui和jobserver啟動時候回需要加載adminserver的配置。
- Registry:鏡像倉庫,負責存儲鏡像文件。
- Log:為了幫助監控Harbor運行,負責收集其他組件的log,供日后進行分析。
三:Harbor和Registry的比較
Harbor和Registry都是Docker的鏡像倉庫,但是Harbor作為更多企業的選擇,是因為相比較於Regisrty來說,它具有很多的優勢。
1.提供分層傳輸機制,優化網絡傳輸
Docker鏡像是是分層的,而如果每次傳輸都使用全量文件(所以用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID為標識,確定傳輸的對象。
2.提供WEB界面,優化用戶體驗
只用鏡像的名字來進行上傳下載顯然很不方便,需要有一個用戶界面可以支持登陸、搜索功能,包括區分公有、私有鏡像。
3.支持水平擴展集群
當有用戶對鏡像的上傳下載操作集中在某服務器,需要對相應的訪問壓力作分解。
4.良好的安全機制
企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的權限,具有更好的安全性。
5.Harbor提供了基於角色的訪問控制機制,並通過項目來對鏡像進行組織和訪問權限的控制。kubernetes中通過namespace來對資源進行隔離,在企業級應用場景中,通過將兩者進行結合可以有效將kubernetes使用的鏡像資源進行管理和訪問控制,增強鏡像使用的安全性。尤其是在多租戶場景下,可以通過租戶、namespace和項目相結合的方式來實現對多租戶鏡像資源的管理和訪問控制。