企業級Docker鏡像倉庫Harbor部署與使用

在實際生產運維中,每每須要把鏡像發佈到幾10、上百臺或更多的節點上。這時單臺Docker主機上鏡像已沒法知足,項目愈來愈多,鏡像就愈來愈多,都放到一臺Docker主機上是不行的,咱們須要一個像Git倉庫同樣系統來統一管理鏡像。這裏介紹的是一個企業級鏡像倉庫Harbor,將做爲咱們容器雲平臺的鏡像倉庫中心。
前端

Habor是由VMWare公司開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴展,從而得到了更加普遍的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪問控制 ,AD/LDAP集成以及審計日誌等,足以知足基本企業需求。 mysql


官方地址:
https://vmware.github.ionginx

Github:https://github.com/goharbor/harborgit


image.png

一、Harbor主要功能

  • 基於角色訪問控制(RBAC)

    在企業中,一般有不一樣的開發團隊負責不一樣的項目,鏡像像代碼同樣,每一個人角色不一樣需求也不一樣,所以就須要訪問權限控制,根據角色分配相應的權限。 
    例如,開發人員須要對項目構建這就用到讀寫權限(push/pull),測試人員只須要讀權限(pull),運維通常管理鏡像倉庫,具有權限分配能力,項目經理具備全部權限。 github

  • 鏡像複製redis

    能夠將倉庫中的鏡像同步到遠程的Harbor,相似於MySQL主從同步功能。sql

  • LDAP

    Harbor支持LDAP認證,能夠很輕易接入已有的LDAP。數據庫

  • 鏡像刪除和空間回收

    Harbor支持在Web刪除鏡像,回收無用的鏡像,釋放磁盤空間。瀏覽器

  • 圖形頁面管理

    用戶很方面搜索鏡像及項目管理。app

  • 審計

    對倉庫的全部操做都有記錄。

  • REST API

    完整的API,方便與外部集成。

二、Harbor組件


組件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql數據庫
harbor-jobservice 負責鏡像複製
harbor-log 記錄操做日誌
harbor-ui Web管理頁面和API
nginx 前端代理,負責前端頁面和鏡像上傳/下載轉發
redis 會話
registry 鏡像存儲

三、Harbor部署

環境要求:

image.png


Harbor安裝有3種方式:

  • 在線安裝:從Docker Hub下載Harbor相關鏡像,所以安裝軟件包很是小

  • 離線安裝:安裝包包含部署的相關鏡像,所以安裝包比較大

  • OVA安裝程序:當用戶具備vCenter環境時,使用此安裝程序,在部署OVA後啓動Harbor

咱們採用離線安裝,首先下載離線安裝包:https://github.com/vmware/harbor/releases

HTTP方式部署

基本配置:

image.png

準備配置文件:

# ./prepare


安裝並啓動Harbor:


# ./install.sh


查看運行狀態:


image.png


部署完成,是否是很簡單呢! 

若是有非Up狀態,先看日誌:

# ls /var/log/harbor/

adminserver.log  jobservice.log  mysql.log  proxy.log  redis.log  registry.log  ui.log


HTTPS方式部署:

若是想以https加密方式提供服務能夠參考這個免費的視頻教程:https://ke.qq.com/course/311382
或者參考官方文檔:https://github.com/vmware/harbor/blob/master/docs/configure_https.md 

四、登陸Web頁面


瀏覽器輸入:http://10.206.240.188

帳號:admin  

密碼:Harbor12345


image.png

這裏有4個項目,library是默認自帶的,一般用這個存儲一些公共的鏡像,這個項目下鏡像誰均可以pull,但不能push,push須要先登陸。其餘3個項目是我本身建立的,請忽略。

五、library項目賦予新用戶push權限

先建立一個用戶:

image.png

進入library項目,將用戶加入這個成員:

image.png

這樣lizhenliang用戶就具有了對這個library項目的push權限。 
注:建立新項目賦予用戶權限同等方式。

七、上傳鏡像

接下來將剛纔構建的鏡像推送到Harbor倉庫,先看看咱們要推送的鏡像:

image.png

在推送以前,須要注意第一列,這個完整格式是:

image.png

若是鏡像只放在本地存儲REPOSITORY寫什麼均可以,但推送到鏡像倉庫就必須指定倉庫中心地址。 

因此,先打重命名REPOSITORY,其實就是引用源鏡像標記了一個目標鏡像:

image.png

訪問拒絕,剛說過,push需先登陸:

image.png

八、下載鏡像

其餘Docker主機怎麼下載剛推送的鏡像呢? 
因爲咱們搭建的Harbor是以HTTP提供服務的,而Docker CLI默認以HTTPS 訪問倉庫,因此要先配置可信任,不然pull鏡像倉庫失敗。若是是HTTPS提供服務就不用配置這一步了。

image.png

pull的地址跟push時是同樣的。

相關文章
相關標籤/搜索