Harbor - 企業級 Docker 私有倉庫

目錄git

 

1、安裝底層需求github

2、Harbor 安裝:docker

一、下載Harbor數據庫

二、解壓json

三、配置 harbor.cfvim

四、建立 https 證書以及配置相關目錄權限 證書以及配置相關目錄權限 bash

五、運行腳本進行安裝服務器

六、訪問測試網絡

七、上傳鏡像進行上傳測試 架構

八、其它  Docker 客戶端下載測試

3、Harbor 原理說明

一、軟件資源介紹 

二、Harbor特性

三、Harbor認證過程  


1、安裝底層需求

  • Python應該是 應該是2.7或更高版本 或更高版本
  • Docker引擎應爲 引擎應爲1.10或更高版本 或更高版本
  • Docker Compose須要爲 須要爲1.6.0或更高版本
docker-compose: :curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、Harbor 安裝:

安裝:Harbor 官方地址: 官方地址:https://github.com/vmware/harbor/releases 

一、下載Harbor

wget https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

二、解壓

tar xvf harbor-offline-installer-v1.2.0.tgz

三、配置 harbor.cf

a、必選參數

  • hostname:目標的主機名或者徹底限定域名
  • ui_url_protocolhttphttps默認爲  http
  • db_password:用於 db_authMySQL數據庫的根密碼。更改此密碼進行任何生產用途
  •  
  • max_job_workers:(默認值爲  3)做業服務中的複製工做人員的最大數量。對於每一個映像複製做業, 工做人員將存儲庫的全部標籤同步到遠程目標。增長此數字容許系統中更多的併發複製做業。可是,因爲每一個工做人員都會消耗必定數量的網絡    / CPU / IO資源,請根據主機的硬件資源,仔細選擇該屬性的值
  • customize_crt:( onoff默認爲 on)當此屬性打開時,   prepare腳本將爲註冊表的令牌的生成    /驗證創建私鑰和根證書
  • ssl_certSSL證書的路徑,僅當協議設置爲    https時才應用
  • ssl_cert_key: :SSL密鑰的路徑,僅當協議設置爲 密鑰的路徑,僅當協議設置爲https時才應用 
  • secretkey_path:用於在複製策略中加密或解密遠程註冊表的密碼的密鑰路徑 

四、建立 https 證書以及配置相關目錄權限 證書以及配置相關目錄權限 

openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir  /data/cert
chmod -R 777 /data/cert

五、運行腳本進行安裝

./install.sh

六、訪問測試

訪問測試 https://reg.yourdomain.com 的管理員門戶(將 的管理員門戶(將reg.yourdomain.com更改成您的主機名 更改成您的主機名harbor.cfg)。請注意,默 )。請注意,默認管理員用戶名 認管理員用戶名/密碼爲 密碼爲admin / Harbor12345

七、上傳鏡像進行上傳測試 

a、指定鏡像倉庫地址
vim /etc/docker/daemon.json
{
 "insecure-registries": ["serverip"]
}
b、下載測試鏡像
docker  pull  hello-world
c、給鏡像從新打標籤
docker tag hello-world    serverip/hello-world:latest
d、登陸進行上傳
docker login serverip

8、其它  Docker 客戶端下載測試

a、指定鏡像倉庫地址
vim /etc/docker/daemon.json
{
 "insecure-registries": ["serverip"]
}
b、下載測試鏡像
docker pull  serverip/hello-world:latest

3、Harbor 原理說明

一、軟件資源介紹 

HarborVMware公司開源的企業級   DockerRegistry項目,項目地址爲  https://github.com/vmware/harbor。其目

標是幫助用戶迅速搭建一個企業級的     Dockerregistry服務。它以  Docker公司開源的 registry爲基礎,提供了管理   UI

基於角色的訪問控制   (Role Based Access Control)AD/LDAP集成、以及審計日誌   (Auditlogging) 等企業用戶需求的功

能,同時還原生支持中文。    Harbor的每一個組件都是以  Docker容器的形式構建的,使用    Docker Compose來對它進行部

署。用於部署  HarborDocker Compose模板位於   /Deployer/docker-compose.yml,由 5個容器組成,這幾個容器經過

Docker link的形式鏈接在一塊兒,在容器之間經過容器名字互相訪問。對終端用戶而言,只須要暴露             proxy

Nginx)的服務端口

  • Proxy:由Nginx 服務器構成的反向代理。  
  • Registry:由Docker官方的開源 registry 鏡像構成的容器實例。  
  • UI:即架構中的 core services, 構成此容器的代碼是 Harbor項目的主體。  
  • MySQL:由官方 MySQL鏡像構成的數據庫容器。  
  • Log:運行着 rsyslogd的容器,經過 log-driver的形式收集其餘容器的日誌

二、Harbor特性

  • a、基於角色控制:用戶和倉庫都是基於項目進行組織的, 而用戶基於項目能夠擁有不一樣的權限  
  • b、基於鏡像的複製策略:鏡像能夠在多個Harbor實例之間進行復制  
  • c、支持LDAP:Harbor的用戶受權可使用已經存在LDAP用戶  
  • d、鏡像刪除 &垃圾回收:Image能夠被刪除而且回收Image佔用的空間,絕大部分的用戶操做API, 方便  用戶對系統進行擴展
  • e、用戶UI:用戶能夠輕鬆的瀏覽、搜索鏡像倉庫以及對項目進行管理  
  • f、輕鬆的部署功能:Harbor提供了online、offline安裝,除此以外還提供了virtualappliance安裝  
  • g、Harbor和 dockerregistry 關係:Harbor實質上是對 dockerregistry 作了封裝,擴展了本身的業務模塊

三、Harbor認證過程  

  • a、dockerdaemon從dockerregistry拉取鏡像。  
  • b、若是dockerregistry須要進行受權時,registry將會返回401 Unauthorized響應,同時在響應中包含了docker  
  • client如何進行認證的信息。  
  • c、dockerclient根據registry返回的信息,向authserver發送請求獲取認證token。  
  • d、authserver則根據本身的業務實現去驗證提交的用戶信息是否存符合業務要求。  
  • e、用戶數據倉庫返回用戶的相關信息。  
  • f、authserver將會根據查詢的用戶信息,生成token令牌,以及當前用戶所具備的相關權限信息.上述就是  完整的受權過程.當用戶完成上述過程之後即可以執行相關的pull/push操做。認證信息會每次都帶在請求頭中

Harbor總體架構 

四、Harbor認證流程  

  • a、首先,請求被代理容器監聽攔截,並跳轉到指定的認證服務器。  
  • b、 若是認證服務器配置了權限認證,則會返回401。通知dockerclient在特定的請求中須要帶上一個合法的  token。而認證的邏輯地址則指向架構圖中的core services。  
  • c、 當dockerclient接受到錯誤code。client就會發送認證請求(帶有用戶名和密碼)到coreservices進行basic  auth認證。  
  • d、 當C的請求發送給ngnix之後,ngnix會根據配置的認證地址將帶有用戶名和密碼的請求發送到core serivces。  
  • e、 coreservices獲取用戶名和密碼之後對用戶信息進行認證(本身的數據庫或者介入LDAP均可以)。成功以 後,返回認證成功的信息

Harbor認證流程

相關文章
相關標籤/搜索