天天看點

centos7.4 部署Harbor——企業級私有鏡像倉庫

一、Harbor介紹

Harbor是一個用于存儲和分發Docker鏡像的企業級Registry伺服器,通過添加一些企業必需的功能特性,例如安全、辨別和管理等,擴充了開源Docker Distribution。作為一個企業級私有Registry伺服器,Harbor提供了更好的性能和安全。提升使用者使用Registry建構和運作環境傳輸鏡像的效率。Harbor支援安裝在多個Registry節點的鏡像資源複制,鏡像全部儲存在私有Registry中, 確定資料和知識産權在公司内部網絡中管控。另外,Harbor也提供了進階的安全特性,諸如使用者管理,通路控制和活動審計等。

二、Harbor特性

  • 基于角色的通路控制:使用者與Docker鏡像倉庫通過“項目”進行組織管理,一個使用者可以對多個鏡像倉庫在同一命名空間(project)裡有不同的權限。
  • 鏡像複制: 鏡像可以在多個Registry執行個體中複制(同步)。尤其适合于負載均衡,高可用,混合雲和多雲的場景。
  • 圖形化使用者界面 :使用者可以通過浏覽器來浏覽,檢索目前Docker鏡像倉庫,管理項目和命名空間。
  • AD/LDAP 支援 : Harbor可以內建企業内部已有的AD/LDAP,用于鑒權認證管理。
  • 審計管理 : 所有針對鏡像倉庫的操作都可以被記錄追溯,用于審計管理。
  • 國際化 : 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言将會添加進來。
  • RESTful API : RESTful API提供給管理者對于Harbor更多的操控, 使得與其它管理軟體內建變得更容易。
  • 部署簡單 : 提供線上和離線兩種安裝工具,也可以安裝到vSphere平台(OVA方式)虛拟裝置。

三、Harbor元件

Harbor在架構上主要由6個元件構成:

  • Proxy:Harbor的registry, UI, token等服務,通過一個前置的反向代理統一接收浏覽器、Docker用戶端的請求,并将請求轉發給後端不同的服務。
  • Registry: 負責儲存Docker鏡像,并處理docker push/pull 指令。由于我們要對使用者進行通路控制,即不同使用者對Docker image有不同的讀寫權限,Registry會指向一個token服務,強制使用者的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token 進行解密驗證。
  • Core services: 這是Harbor的核心功能,主要提供以下服務:
  • UI:提供圖形化界面,幫助使用者管理registry上的鏡像(image), 并對使用者進行授權。
  • webhook:為了及時擷取registry 上image狀态變化的情況, 在Registry上配置webhook,把狀态變化傳遞給UI子產品。
  • token 服務:負責根據使用者權限給每個docker push/pull指令簽發token. Docker 用戶端向Regiøstry服務發起的請求,如果不包含token,會被重定向到這裡,獲得token後再重新向Registry進行請求。
  • Database:為core services提供資料庫服務,負責儲存使用者權限、審計日志、Docker image分組資訊等資料。
  • Job Services:提供鏡像遠端複制功能,可以把本地鏡像同步到其他Harbor執行個體中。
  • Log collector:為了幫助監控Harbor運作,負責收集其他元件的log,供日後進行分析。

四、安裝準備

1.安裝docker

可以參考之前的一篇部落格

centos 7 安裝 指定版本docker

2.安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
           
chmod +x /usr/local/bin/docker-compose
           

檢視是否安裝成功

docker-compose version
           

出現如下所示則說明安裝成功

docker-compose version 1.21.0, build 5920eb0
docker-py version: 3.2.1
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

           

五、部署Harbor

1. 下載下傳檔案

安裝方式有兩種,線上安裝和離線安裝,我這裡選擇的是離線安裝

centos7.4 部署Harbor——企業級私有鏡像倉庫
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0.tgz
           

下載下傳過程有點緩慢,耐心等待

tar -zxf harbor-offline-installer-v1.6.0.tgz  
           
cd /harbor
           

2.修改配置檔案

# vim /harbor/harbor.cfg
hostname = registry.xxx.com
#郵箱配置
email_server = smtp.qq.com
email_server_port = 25
email_username = [email protected]
email_password =12345678
email_ssl = false
#禁止使用者注冊
self_registration = off
#設定隻有管理者可以建立項目
project_creation_restriction = adminonly
           

3.執行安裝腳本

/harbor/install.sh
           

4.Harbor啟動與停止

Harbor 的日常運維管理是通過docker-compose來完成的,Harbor本身有多個服務程序,都放在docker容器之中運作,我們可以通過docker ps指令檢視。

docker ps -a
           
啟動Harbor
# docker-compose start
停止Harbor
# docker-comose stop
重新開機Harbor
# docker-compose restart