首頁 > 軟體

Docker容器harbor私有倉庫部署和管理

2022-08-04 22:04:03

前言

之前我們搭建了本地私有倉庫,但是本地倉庫的管理和使用比較麻煩,個原生的私有倉庫並不好用,所以我們採用harbor私有倉庫,也叫私服,更加人性化。

一、Harbor概述

  • Harbor是VMware公司開源的企業級Docker Registry專案,其目標是幫助使用者迅速搭建一個企業級的Docker Registry服務。
  • Harbor以Docker 公司開源的Registry 為基礎,提供了圖形管理UI、基於角色的存取控制(Role Based AccessControl)、AD/LDAI們成以心宙計紀錄檔(Auditlogging)等企業使用者需求的功能,同時還原生支援中文。
  • Harbor的每個元件都是以Docker容器的形式構建的,使用docker-compose來對它進行部署。用於部署Harbor的docker-compose模板位於harbor/docker-compose.yml。

二、Harbor的特性

  • 基於角色控制:使用者和倉庫都是基於專案進行組織的,而使用者在專案中可以擁有不同的許可權。
  • 基於映象的複製策略:映象可以在多個Harbor範例之間進行復制(同步)
  • 支援LDAP/AD:Harbor可以整合企業內部已有的AD/LDAP(類似資料庫的一張表),用於對已經存在的使用者認證和管理。
  • 映象刪除和垃圾回收:映象可以被刪除,也可以回收映象佔用的空間。
  • 圖形化使用者介面:使用者可以通過瀏覽器來瀏覽,搜尋映象倉庫以及對專案進行管理。
  • 審計管理:所有針對映象倉庫的操作都可以被記錄追溯,用於審計管理。
  • 支援 RESTful API:RESTful API 提供給管理員對於Harbor更多的操控,使得與其它管理軟體整合變得更容易。
  • Harbor和docker registry的關係:Harbor實質上是對docker registry做了封裝,擴充套件了自己的業務模板。

三、Harbor的構成

Harbor在架構上主要有proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services六個元件。

  • Proxy:是一個nginx的前端代理,Harbor的Registry、UI、Token服務等元件,都處在nginx反向代理後邊。該代理將來自瀏覽器、docker clients的請求轉發到後端不同的服務上。
  • Registry:負責儲存Docker映象,並處理Docker push/pull命令。由於要對使用者進行存取控制,即不同使用者對Docker映象有不同的讀寫許可權,Registry會指向一個Token服務,強制使用者的每次Docker pull/push請求都要攜帶一個合法的Token,Registry會通過公鑰對Token進行解密驗證。
  • Core services:Harbor的核心功能,主要提供一下3個服務:

UI(harbor-ui):提供圖形化介面,幫助使用者管理Registry上的映象(image),並對使用者進行授權。
WebHook:為了及時獲取Registry上image狀態變化的情況,在Registry上設定WebHook,把狀態變化傳遞給UI模組。
Token服務:負責根據使用者許可權給每個Docker push/pull命令簽發Token.Docker使用者端向Registry服務發起的請求,如果不包含Docker Token,會被重定向到Token服務,獲得Token後再重新向Registry進行請求。

  • Database(harbor-db):為core services提供資料庫服務,負責儲存使用者許可權、審計紀錄檔、Docker映象分組資訊等資料。Docker資料儲存在檔案系統,但是分組資訊儲存在資料庫。
  • Job services:主要用於映象複製,本地映象可以被同步到遠端Harbor範例上。
  • Log collector(harbor-log):負責收集其他元件的紀錄檔到一個地方。

Harbor 的每個元件都是以 Docker 容器的形式構建的,因此,使用 Docker Compose 來對它進行部署。
總共分為7個容器執行,通過在docker-compose.yml所在目錄中執行 docker-compose ps 命令來檢視, 名稱分別為:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。
其中 harbor-adminserver 主要是作為一個後端的設定資料管理,並沒有太多的其他功能。harbor-ui 所要操作的所有資料都通過 harbor-adminserver 這樣一個資料設定管理中心來完成

四、Harbor私有倉庫搭建

(1)安裝docker-compose

cd /opt
#上傳docker-compose
mv docker-compose /usr/bin
chmod +x /usr/bin/docker-compose

(2)安裝harbor

rz harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
#==設定Harbor引數檔案==
vim /usr/local/harbor/harbor.cfg
#==第5行修改==
hostname = 192.168.48.14

安裝harbor映象

sh /usr/local/harbor/install.sh

檢視映象與容器:

docker ps
docker images

物理機存取server IP

192.168.48.14
使用者名稱:admin
密碼:Harbor12345

(3)新建專案

(4)映象推播

#登入私有倉庫
docker login -u admin -p Harbor12345 http://192.168.48.14
vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.48.14"]
}

#下載映象進行測試
docker pull nginx

#映象打標籤
docker tag nginx 192.168.48.14/xy/nginx:v1

#上傳映象到Harbor
docker push 192.168.48.14/xy/nginx:v1

瀏覽器存取倉庫,檢視映象

(5)從私有倉庫下載映象

使用另外一臺伺服器,進行映象下載

#新增私有倉庫地址
vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.48.14"]
}
#下載映象
#docker pull 私有倉庫地址/倉庫名/映象名:標籤
docker pull 192.168.48.14/xy/nginx:v1

檢視Hardor紀錄檔:

(6)Harbor管理

可以使用 docker-compose 來管理 Harbor。一些有用的命令如下所示,必須在與docker-compose.yml 相同的目錄中執行。

修改 Harbor.cfg 組態檔:

  • 要更改 Harbour 的組態檔時,請先停止現有的 Harbour 範例並更新 Harbor.cfg;
  • 然後執行 prepare 指令碼來填充設定;
  • 最後重新建立並啟動 Harbour 的範例。
#解除安裝
docker-compose down -v

#編輯組態檔 
vim harbor.cfg

#填充設定
./prepare

#啟動Harbor
docker-compose up -d

#如果報錯
解決思路
關閉防火牆、重啟docker
systemctl stop firewalld
setenfore 0
systemctl restart docker

到此這篇關於Docker容器harbor私有倉庫部署和管理的文章就介紹到這了,更多相關Docker harbor內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com