1. 程式人生 > >Centos7安裝Docker鏡像倉庫Harbor1.5.3

Centos7安裝Docker鏡像倉庫Harbor1.5.3

編碼 harbor rom smtp 圖片 tag wall tgz 全部保存

Harbor 詳細介紹

技術分享圖片

1、容器應用的開發和運行離不開可靠的鏡像管理。從安全和效率等方面考慮,部署在私有環境內的 Registry 是非常必要的。

2、Harbor 是由 VMware 公司中國團隊為企業用戶設計的 Registry server 開源項目,包括了權限管理(RBAC)、LDAP、審計、管理界面、自我註冊、HA 等企業必需的功能,同時針對中國用戶的特點,設計鏡像復制和中文支持等功能,歡迎使用和反饋意見。

3、作為一個企業級私有 Registry 服務器,Harbor 提供了更好的性能和安全。提升用戶使用 Registry 構建和運行環境傳輸鏡像的效率。Harbor 支持安裝在多個 Registry 節點的鏡像資源復制,鏡像全部保存在私有 Registry 中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor 也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。

1)基於角色的訪問控制

用戶與 Docker 鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)裏有不同的權限。

2)鏡像復制

鏡像可以在多個 Registry 實例中復制(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。

3)圖形化用戶界面

用戶可以通過瀏覽器來瀏覽,檢索當前 Docker 鏡像倉庫,管理項目和命名空間。

4)AD/LDAP 支持

Harbor 可以集成企業內部已有的 AD/LDAP,用於鑒權認證管理。

5)審計管理

所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。

6)國際化

已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。

7)RESTful API

RESTful API 提供給管理員對於 Harbor 更多的操控, 使得與其它管理軟件集成變得更容易。

8)部署簡單

提供在線和離線兩種安裝工具, 也可以安裝到 vSphere 平臺(OVA 方式)虛擬設備

Harbor 架構介紹

Harbor在架構上主要由五個組件構成:

1、Proxy:

Harbor的registry, UI, token等服務,通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,並將請求轉發給後端不同的服務。

2、Registry:

負責儲存Docker鏡像,並處理docker push/pull 命令。由於我們要對用戶進行訪問控制,即不同用戶對Docker image有不同的讀寫權限,Registry會指向一個token服務,強制用戶的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token 進行解密驗證。

3、Core services:

這是Harbor的核心功能,主要提供以下服務:

1)UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 並對用戶進行授權。

2)webhook:為了及時獲取registry 上image狀態變化的情況, 在Registry上配置webhook,把狀態變化傳遞給UI模塊。

3)token 服務:負責根據用戶權限給每個docker push/pull命令簽發token. Docker 客戶端向Regi?stry服務發起的請求,如果不包含token,會被重定向到這裏,獲得token後再重新向Registry進行請求。

4、Database:

為core services提供數據庫服務,負責儲存用戶權限、審計日誌、Docker image分組信息等數據。

5、Log collector:

為了幫助監控Harbor運行,負責收集其他組件的log,供日後進行分析。
各個組件之間的關系如下圖所示:
技術分享圖片

實驗環境:

系統版本:centos7x3.10.0-514.el7.x86_64

Docker版本:1.13.1(yum安裝)

harbor版本:harbor-offline-installer-v1.5.3.tgz(離線版)

註:由於Harbor是基於Docker Registry V2版本,所以就要求Docker版本不小於1.10.0,Docker-compose版本不小於1.6.0。

關閉防火墻並禁止開機自啟

systemctl stop firewalld.service
systemctl disable firewalld

關閉selinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/sysconfig/selinux
重啟 reboot

安裝harbor

1、安裝harbor依賴環境

1)安裝docker

yum -y install docker

2)安裝docker-compose

yum -y install docker-compose
技術分享圖片

2、下載離線安裝包harbor-offline-installer-v1.5.3.tgz

1)使用下載命令wget或者aria2c下載harbor

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz

2)解壓harbor到本地

tar zxf harbor-offline-installer-v1.5.3.tgz
技術分享圖片

3)將解壓目錄移動到根下

mv harbor /
技術分享圖片
註:這一步操作是為了方便管理和防止誤刪除(可做可不做)!

3、添加CA證書

註:如果需要搭建基於https的harbor需要添加ca證書,如果搭建的是基於http可以跳過該步驟。

4、編輯harbor配置文件

1)編輯harbor.cfg文件

vi /harbor/harbor.cfg

#hostname設置訪問地址。可以使用ip、域名、主機名,不可以設置為127.0.0.1或localhost。(如果部署的是備份庫,填寫ip而不是域名,否則會導致倉庫管理連接失敗,host無法識別原因不明)
hostname = bakreg.cn

#訪問協議。默認是http,如果搭建https的倉庫就改為https。
ui_url_protocol = https

#可選的https證書配置地址
ssl_cert = /root/cert/bakreg.cn.crt
ssl_cert_key = /root/cert/bakreg.cn.key

#用於在復制策略中加密或解密遠程註冊表的密碼的密鑰路徑。secretkey_path不需要修改。如果必須修改它,你需要在/root/harbor/docker-compose.yml中手動調整路徑,因為它們是硬編碼。
secretkey_path = /data

#郵件設置,發送重置密碼郵件時使用
#email_identity作為用戶名
email_identity =
email_server = 郵箱的smtp服務器域名
email_server_port = 25
email_username =
email_password =
email_from =
email_ssl = false
email_insecure = false

#管理員admin的登錄密碼。默認是Harbor12345
harbor_admin_password = Harbor12345

#認證方式。默認是db_auth,支持多種認證方式,如數據庫認證(db_auth)、LADP(ldap_auth)。
auth_mode = db_auth

#LDAP認證時配置項(這項可以登錄後配置也可以)。
ldap_url = # LDAP URL
ldap_searchdn = # LDAP 搜索DN
ldap_search_pwd = # LDAP 搜索DN的密碼
ldap_basedn = # LDAP 基礎DN
ldap_filter = # LDAP 過濾器
ldap_uid = # LDAP 用戶uid的屬性
ldap_scope = 2
ldap_timeout = 5

#是否開啟註冊。on開啟,off關閉。
self_registration = off

#Token有效時間。默認30分鐘。
token_expiration = 30

#標記用戶創建項目權限控制。默認是everyone(允許所有人創建),也可以設置為adminonly(只能管理員才能創建)
project_creation_restriction = everyone

技術分享圖片
註:暫時先更改這一行即可啟動,其他功能按照需求更改!

5、啟動harbor服務

1)進入harbor解壓目錄

cd /harbor/
技術分享圖片

2)啟動harbor服務

./install.sh
技術分享圖片
技術分享圖片
技術分享圖片

3)harbor的啟動和關閉方式

//關閉harbor服務(先進入harbor目錄)

docker-compose stop
技術分享圖片

//開啟harbor服務(先進入harbor目錄)

docker-compose up -d
技術分享圖片

6、驗證harbor服務是否正常運行

1)訪問地址:http://192.168.150.199
技術分享圖片

2)使用默認用戶密碼登陸
技術分享圖片
註:默認的用戶名admin,密碼Harbor12345。

7、基於http協議的harbor上傳下載鏡像

1)docker登陸harbor

docker login 192.168.150.199
技術分享圖片

2)為鏡像打標記

docker tag 原鏡像名 192.168.150.199/項目名/打標記的鏡像名
技術分享圖片
註:如果是普通用戶推送鏡像,切記需要普通用戶先自己創建項目,不然上傳給默認的library項目沒有權限,只有admin用戶有推送library項目的權利。

3)推送鏡像到harbor倉庫

docker push 192.168.150.199/項目名/打標記的鏡像名
技術分享圖片
註:如果是普通用戶推送鏡像,那麽以上的library項目名換成自己的項目名即可!

4)拉取鏡像

//刪除打標記的鏡像

docker rmi -f 192.168.150.199/library/tomcat:v1
技術分享圖片

//拉取倉庫的tomcat鏡像

docker pull 鏡像的完整路徑
技術分享圖片
註:以上截圖可能有的童鞋會問,不需要docker login IP登陸嗎?首先我可以告訴你:可以用,也可以不用。其次如果你要是覺得需要用戶密碼下載,那麽可以在harbor的項目上設置不公開即可實現用戶密碼下載;也可能有童鞋會說不用不夠安全啥的,其實你完全不必擔心,因為需要完整路徑才能下載,而且這個鏡像倉庫是在內網,說白知道的都是公司的同事。如果不知道怎麽填寫完整路徑,下載鏡像的,那麽就登錄上網頁harbor,然後點擊你要下載的那個鏡像後邊pull命令提醒,例如:
技術分享圖片

5)docker退出harbor登陸

docker logout harbor的IP
技術分享圖片

8、基於https協議的harbor上傳下載鏡像

註:由於我使用的是http協議,所以這步就沒有測試!如果想使用https協議
推薦文章https://www.cnblogs.com/straycats/p/8850693.html

Centos7安裝Docker鏡像倉庫Harbor1.5.3