目錄git
1、安裝底層需求github
2、Harbor 安裝:docker
一、下載Harbor數據庫
二、解壓json
四、建立 https 證書以及配置相關目錄權限 證書以及配置相關目錄權限 bash
五、運行腳本進行安裝服務器
六、訪問測試網絡
七、上傳鏡像進行上傳測試 架構
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_protocol:http或https。默認爲 http
- db_password:用於 db_auth的MySQL數據庫的根密碼。更改此密碼進行任何生產用途
- max_job_workers:(默認值爲 3)做業服務中的複製工做人員的最大數量。對於每一個映像複製做業, 工做人員將存儲庫的全部標籤同步到遠程目標。增長此數字容許系統中更多的併發複製做業。可是,因爲每一個工做人員都會消耗必定數量的網絡 / CPU / IO資源,請根據主機的硬件資源,仔細選擇該屬性的值
- customize_crt:( on或off。默認爲 on)當此屬性打開時, prepare腳本將爲註冊表的令牌的生成 /驗證創建私鑰和根證書
- ssl_cert:SSL證書的路徑,僅當協議設置爲 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
![](http://static.javashuo.com/static/loading.gif)
七、上傳鏡像進行上傳測試
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 原理說明
一、軟件資源介紹
Harbor是VMware公司開源的企業級 DockerRegistry項目,項目地址爲 https://github.com/vmware/harbor。其目
標是幫助用戶迅速搭建一個企業級的 Dockerregistry服務。它以 Docker公司開源的 registry爲基礎,提供了管理 UI,
基於角色的訪問控制 (Role Based Access Control),AD/LDAP集成、以及審計日誌 (Auditlogging) 等企業用戶需求的功
能,同時還原生支持中文。 Harbor的每一個組件都是以 Docker容器的形式構建的,使用 Docker Compose來對它進行部
署。用於部署 Harbor的Docker 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認證流程