Docker之harbor的安裝部署

目錄

 

harbor的簡介

Harbor特性

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,供日後進行分析。

各個組件之間的關係如下圖所示:

harbor的安裝

安裝Harbor需要先安裝docker和docker-compose,docker安裝參考本作者前面的博客,

docker-compose的安裝,先下載二進制文件

curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

賦予二進制文件可執行權限

chmod +x /usr/local/bin/docker-compose

測試是否安裝成功

[root@server1 ~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01

開始安裝harbor,安裝方式分爲在線安裝和離線安裝兩種方式這裏我們安裝v1.10.1版本的

(下載地址:https://github.com/goharbor/harbor/releases)

如果選擇在線安裝直接wget就可以,此處我們採用離線安裝(offline-installer),直接下載安裝包然後解壓

[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.1.tgz 
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common.sh  harbor.v1.10.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare

然後我們編輯harbor,yml文件,修改hostname、https證書路徑、admin密碼(管理員賬號和密碼)

hostname:reg.westos.org

certificate:/root/certs/reg.westos.org.crt

private_key:/root/certs/reg.westos.org.key

harbor_admin_password:Harbor12345

修改完成後編譯運行查看

[root@server1 harbor]# ./prepare 
[root@server1 harbor]# ./install.sh 

訪問測試

瀏覽器訪問https://reg.westos.org:

登錄成功後

新建一個項目,命名爲 westos,並設置訪問級別爲公開。

鏡像的上傳和拉取

修改文件 /etc/docker/daemon.json然後重啓

[root@server1 harbor]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://ioeo57w5.mirror.aliyuncs.com"]
}
{
"insecure-registries": ["reg.westos.org"]
}

systemctl daemon-reload 
systemctl restart docker

  1. 製作鏡像(標記本地Ubuntu鏡像,將其歸入某一倉庫。)
docker tag ubuntu:latest reg.westos.org/westos/ubuntu:latest

進行本機上傳

首先登錄私有庫

[root@server1 harbor]# docker login reg.westos.org
Username: admin
Password: 			
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

然後上傳

[root@server1 harbor]# docker push reg.westos.org/westos/ubuntu

然後查看上傳結果

通過結果發現上傳成功

然後我們先刪除原先的鏡像直接拉取

[root@server1 harbor]# docker rmi reg.westos.org/westos/ubuntu		
Untagged: reg.westos.org/westos/ubuntu:latest
Untagged: reg.westos.org/cl/ubuntu@sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec69836320
[root@server1 harbor]# docker pull reg.westos.org/westos/ubuntu			
Using default tag: latest
latest: Pulling from westos/ubuntu
Digest: sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec69836320
Status: Downloaded newer image for reg.westos.org/westos/ubuntu:latest
reg.westos.org/westos/ubuntu:latest

然後我們準備另一臺主機server2

[root@server2 ~]# cat /etc/hosts
172.25.74.1     server1 reg.westos.org    #做好解析

daemon文件配置

[root@server2 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://reg.westos.org"]
}

建立證書目錄

[root@server2 ~]#  mkdir -p /etc/docker/certs.d/reg.westos.org

把crt證書放到/etc/docker/certs.d/harbor.dinginfo.com目錄下:

[root@server2 ~]# ls /etc/docker/certs.d/reg.westos.org
reg.westos.org.crt

然後,重啓docker

systemctl daemon-reload
systemctl restart docker

然後我們直接登錄

[root@server2 ~]# docker login reg.westos.org
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

上傳鏡像

[root@server2 ~]# docker tag nginx:latest reg.westos.org/westos/nginx
[root@server2 ~]# docker push reg.westos.org/westos/nginx

網頁端查看

說明上傳成功

測試下載:

[root@server2 ~]# docker pull reg.westos.org/westos/ubuntu
Using default tag: latest
latest: Pulling from westos/ubuntu
5bed26d33875: Pull complete 
f11b29a9c730: Pull complete 
930bda195c84: Pull complete 
78bf9a5ad49e: Pull complete 
Digest: sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec69836320
Status: Downloaded newer image for reg.westos.org/westos/ubuntu:latest
reg.westos.org/westos/ubuntu:latest

harbor配置成功

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章