日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Docker之Harbor私有倉(cāng)庫(kù)

作者:雞湯來(lái)咯!! 更新時(shí)間: 2022-07-13 編程語(yǔ)言

提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔

文章目錄

  • Harbor概述
    • Harbor的概念
    • Harbor的特性
    • Harbor的構(gòu)成
    • Harbor 部署
      • 部署 Docker-Compose 服務(wù)
      • 部署 Harbor服務(wù)
      • 查看Harbor啟動(dòng)鏡像
      • 創(chuàng)建一個(gè)新項(xiàng)目
        • 登錄到Harbor
        • 下載鏡像測(cè)試
        • 將鏡像打標(biāo)簽
        • 上傳鏡像到 Harbor


Harbor概述

Harbor的概念

Harbor是VMware公司開(kāi)源的企業(yè)級(jí)Docker Registry項(xiàng)目,其目標(biāo)是幫助用戶迅速搭建一個(gè)企業(yè)級(jí)的Docker Registry服務(wù)
Harbor以 Docker 公司開(kāi)源的Registry 為基礎(chǔ),提供了圖形管理UI、基于角色的訪問(wèn)控制(Role Based AccessControl)、AD/LDAP集成、以及審計(jì)日志(Auditlogging)等企業(yè)用戶需求的功能,同時(shí)還原生支持中文
Harbor的每個(gè)組件都是以Docker 容器的形式構(gòu)建的,使用docker-compose 來(lái)對(duì)它進(jìn)行部署。用于部署Harbor 的docker- compose模板位于harbor/ docker- compose.yml

Harbor的特性

  1. 基于角色控制: 用戶和倉(cāng)庫(kù)都是基于項(xiàng)目進(jìn)行組織的,而用戶在項(xiàng)目中可以擁有不同的權(quán)限
  2. 基于鏡像的復(fù)制策略: 鏡像可以在多個(gè)Harbor實(shí)例之間進(jìn)行復(fù)制(同步)
  3. 支持LDAP/AD: Harbor 可以集成企業(yè)內(nèi)部有的AD/LDAP (類似數(shù)據(jù)庫(kù)的一-張表),用于對(duì)已經(jīng)存在的用戶認(rèn)證和管理
  4. 鏡像刪除和垃圾回收: 鏡像可以被刪除,也可以回收鏡像占用的空間
  5. 圖形化用戶界面: 用戶可以通過(guò)瀏覽器來(lái)瀏覽,搜索鏡像倉(cāng)庫(kù)以及對(duì)項(xiàng)目進(jìn)行管理
  6. 審計(jì)管理: 所有針對(duì)鏡像倉(cāng)庫(kù)的操作都可以被記錄追溯,用于審計(jì)管理
  7. 支持RESTful API: RESTful API提供給管理員對(duì)于Harbor 更多的操控,使得與其它管理軟件集成變得更容易
  8. Harbor 和docker registry的 關(guān)系: Harbor實(shí)質(zhì) 上是對(duì)docker registry做 了封裝,擴(kuò)展了自己的業(yè)務(wù)模板

Harbor的構(gòu)成

Harbor在架構(gòu)上主要有Proxy、 Registry、 Core services、 Database (Harbor-db) 、Log collector ( Harbor-log)、Job services六個(gè)組件
Proxy: Harbor 的Registry、 UI、Token 服務(wù)等組件,都處在nginx 反向代理后邊。該代理將來(lái)自瀏覽器、docker clients的請(qǐng)求轉(zhuǎn)發(fā)到后端不同的服務(wù)上
Registry:負(fù)責(zé)儲(chǔ)存Docker 鏡像,并處理Docker push/pull命令。由于要對(duì)用戶進(jìn)行訪問(wèn)控制,即不同用戶對(duì)Docker 鏡像有不同的讀寫(xiě)權(quán)限,Registry 會(huì)指向一個(gè)Token 服務(wù),強(qiáng)制用戶的每次Docker pull/push 請(qǐng)求都要攜帶一個(gè)合法的Token,Registry會(huì)通過(guò)公鑰對(duì)Token進(jìn)行解密驗(yàn)證
Core services: Harbor的核心功能,主要提供以下3個(gè)服務(wù):

  • UI (harbor-ui) :提供圖形化界面,幫助用戶管理Registry. 上的鏡像( image),并對(duì)用戶進(jìn)行授權(quán)
  • WebHook: 為了及時(shí)獲取Registry.上image 狀態(tài)變化的情況,在Registry. 上配置 Webhook,把狀態(tài)變化傳遞給UI模塊
  • Token 服務(wù):負(fù)責(zé)根據(jù)用戶權(quán)限給每個(gè)Docker push/pull 命令簽發(fā)Token。 Docker 客戶端向Registry服務(wù)發(fā)起的請(qǐng)求,如果不包含Token,會(huì)被重定向到Token服務(wù),獲得Token后再重新向Registry 進(jìn)行請(qǐng)求
    Database (harbor-db) :為core services提供數(shù)據(jù)庫(kù)服務(wù),負(fù)責(zé)儲(chǔ)存用戶權(quán)限、審計(jì)日志、Docker 鏡像分組信息等數(shù)據(jù)
    Job services: 主要用于鏡像復(fù)制,本地鏡像可以被同步到遠(yuǎn)程Harbor 實(shí)例上
    Log collector (harbor-log) :負(fù)責(zé)收集其他組件的日志到一個(gè)地方
    Harbor 的每個(gè)組件都是以 Docker 容器的形式構(gòu)建的,因此,使用 Docker Compose 來(lái)對(duì)它進(jìn)行部署。
    總共分為7個(gè)容器運(yùn)行,通過(guò)在 docker- compose.yml 所在目錄中執(zhí)行 docker-compose ps命令來(lái)查看, 名稱分別為:nginx、 harbor-jobservice、 harbor-ui、 harbor-db、 harbor-adminserver、registry、 harbor-log。
    其中 harbor-adminserver 主要是作為一個(gè)后端的配置數(shù)據(jù)管理,并沒(méi)有太多的其他功能。harbor-ui 所要操作的所有數(shù)據(jù)都通過(guò) harbor-adminserver 這樣一個(gè)數(shù)據(jù)配置管理中心來(lái)完成。

Harbor 部署

環(huán)境準(zhǔn)備:
Harbor服務(wù)器 192.168.132.88 docker-ce、docker-compose、harbor-offline-v1.2.2
client服務(wù)器 192.168.132.22docker-ce

部署 Docker-Compose 服務(wù)

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
###################
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux內(nèi)核中支持邏輯卷管理的通用設(shè)備映射機(jī)制,
			    它為實(shí)現(xiàn)用于存儲(chǔ)資源管理的塊設(shè)備驅(qū)動(dòng)提供了一個(gè)高度模塊化的內(nèi)核架構(gòu)。
device mapper存儲(chǔ)驅(qū)動(dòng)程序需要 device-mapper-persistent-data 和 lvm2。
###################
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 	
#設(shè)置阿里云鏡像源
[root@localhost ~]# yum install -y docker-ce
[root@zbx-agent01 ~]# systemctl start docker.service
[root@zbx-agent01 ~]# systemctl enable docker.service 
#查看 docker 版本信息
[root@zbx-agent01 ~]# docker version
[root@zbx-agent01 ~]# curl https://get.docker.com > /tmp/install.sh 
#無(wú)論何時(shí)執(zhí)行未知腳本都是有風(fēng)險(xiǎn)的事情,所以在執(zhí)行腳本前可以先查看腳本是否包含惡意代碼。
[root@zbx-agent01 ~]# cat /tmp/install.sh 
[root@zbx-agent01 ~]# chmod +x /tmp/install.sh 
[root@zbx-agent01 ~]# /tmp/install.sh



下載或者上傳 Docker-Compose

[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose    #下載安裝包,我這里直接傳入下載的安裝包
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
[root@localhost ~]# vim /etc/sysctl.conf
####### ####### ####### ####### 
net.ipv4.ip_forward = 1
####### ####### ####### ####### 
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1


在這里插入圖片描述
在這里插入圖片描述

部署 Harbor服務(wù)

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose    #下載安裝包,我這里直接傳入下載的安裝包
chmod +x /usr/local/bin/docker-compose
docker-compose -v
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz   #下載安裝包,我這里傳入下載的安裝包
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz   #下載安裝包,我這里傳入下載的安裝包
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
[root@localhost ~]# vim /usr/local/harbor/harbor.cfg
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# ./prepare
[root@localhost harbor]# ./install.sh


在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

關(guān)于 Harbor.cfg 配置文件中有兩類參數(shù):所需參數(shù)和可選參數(shù) 
 1、所需參數(shù):這些參數(shù)需要在配置文件 Harbor.cfg 中設(shè)置。如果用戶更新它們并運(yùn)行 install.sh 腳本重新安裝 Harbour, 參數(shù)將生效。具體參數(shù)如下: 
 ●hostname:用于訪問(wèn)用戶界面和 register 服務(wù)。它應(yīng)該是目標(biāo)機(jī)器的 IP 地址或完全限定的域名(FQDN),例如 192.168.80.10 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 為主機(jī)名
 ●ui_url_protocol:(http 或 https,默認(rèn)為 http)用于訪問(wèn) UI 和令牌/通知服務(wù)的協(xié)議。如果共證處于啟用狀態(tài),則此參數(shù)必須為 https。 
 ●max_job_workers:鏡像復(fù)制作業(yè)線程。 
 ●db_password:用于db_auth 的MySQL數(shù)據(jù)庫(kù)root 用戶的密碼。
 ●customize_crt:該屬性可設(shè)置為打開(kāi)或關(guān)閉,默認(rèn)打開(kāi)。打開(kāi)此屬性時(shí),準(zhǔn)備腳本創(chuàng)建私鑰和根證書(shū),用于生成/驗(yàn)證注冊(cè)表令牌。當(dāng)由外部來(lái)源提供密鑰和根證書(shū)時(shí),將此屬性設(shè)置為 off。 
 ●ssl_cert:SSL 證書(shū)的路徑,僅當(dāng)協(xié)議設(shè)置為 https 時(shí)才應(yīng)用。 
 ●secretkey_path:用于在復(fù)制策略中加密或解密遠(yuǎn)程 register 密碼的密鑰路徑。
 2、可選參數(shù):這些參數(shù)對(duì)于更新是可選的,即用戶可以將其保留為默認(rèn)值,并在啟動(dòng) Harbor 后在 Web UI 上進(jìn)行更新。如果進(jìn)入 Harbor.cfg,只會(huì)在第一次啟動(dòng) Harbor 時(shí)生效,隨后對(duì)這些參數(shù)的更新,Harbor.cfg 將被忽略。 
 注意:如果選擇通過(guò) UI 設(shè)置這些參數(shù),請(qǐng)確保在啟動(dòng) Harbor 后立即執(zhí)行此操作。具體來(lái)說(shuō),必須在注冊(cè)或在 Harbor 中創(chuàng)建任何新用戶之前設(shè)置所需的 auth_mode。當(dāng)系統(tǒng)中有用戶時(shí)(除了默認(rèn)的 admin 用戶), auth_mode 不能被修改。 具體參數(shù)如下:
 ●Email:Harbor 需要該參數(shù)才能向用戶發(fā)送“密碼重置”電子郵件,并且只有在需要該功能時(shí)才啟用。請(qǐng)注意,在默認(rèn)情況下 SSL 連接時(shí)沒(méi)有啟用。如果 SMTP 服務(wù)器需要 SSL,但不支持 STARTTLS,那么應(yīng)該通過(guò)設(shè)置啟用 SSL email_ssl = TRUE。 
 ●harbour_admin_password:管理員的初始密碼,只在 Harbour 第一次啟動(dòng)時(shí)生效。之后, 此設(shè)置將被忽略,并且應(yīng)在 UI 中設(shè)置管理員的密碼。請(qǐng)注意,默認(rèn)的用戶名/密碼是admin/Harbor12345。 
 ●auth_mode:使用的認(rèn)證類型,默認(rèn)情況下,它是 db_auth,即憑據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。對(duì)于LDAP身份驗(yàn)證,請(qǐng)將其設(shè)置為 ldap_auth。
 ●self_registration:?jiǎn)⒂?禁用用戶注冊(cè)功能。禁用時(shí),新用戶只能由 Admin 用戶創(chuàng)建,只有管理員用戶可以在 Harbour 中創(chuàng)建新用戶。注意:當(dāng) auth_mode 設(shè)置為 ldap_auth 時(shí),自注冊(cè)功能將始終處于禁用狀態(tài),并且該標(biāo)志被忽略。 
 ●Token_expiration:由令牌服務(wù)創(chuàng)建的令牌的到期時(shí)間(分鐘),默認(rèn)為 30 分鐘。 
 ●project_creation_restriction:用于控制哪些用戶有權(quán)創(chuàng)建項(xiàng)目的標(biāo)志。默認(rèn)情況下,每個(gè)人都可以創(chuàng)建一個(gè)項(xiàng)目。如果將其值設(shè)置為“adminonly”,那么只有 admin 可以創(chuàng)建項(xiàng)目。 
 ●verify_remote_cert:打開(kāi)或關(guān)閉,默認(rèn)打開(kāi)。此標(biāo)志決定了當(dāng)Harbor與遠(yuǎn)程 register 實(shí)例通信時(shí)是否驗(yàn)證 SSL/TLS 證書(shū)。 將此屬性設(shè)置為 off 將繞過(guò) SSL/TLS 驗(yàn)證,這在遠(yuǎn)程實(shí)例具有自簽名或不可信證書(shū)時(shí)經(jīng)常使用。 
 另外,默認(rèn)情況下,Harbour 將鏡像存儲(chǔ)在本地文件系統(tǒng)上。在生產(chǎn)環(huán)境中,可以考慮 使用其他存儲(chǔ)后端而不是本地文件系統(tǒng),如 S3、Openstack Swif、Ceph 等對(duì)象存儲(chǔ)。但需要更新 common/templates/registry/config.yml 文件。

查看Harbor啟動(dòng)鏡像

[root@localhost harbor]# cd /usr/local/harbor/
[root@localhost harbor]# docker-compose ps

在這里插入圖片描述

創(chuàng)建一個(gè)新項(xiàng)目

(1)瀏覽器訪問(wèn):http://192.168.13.10登錄 Harbor WEB UI 界面,默認(rèn)的管理員用戶名和密碼是 admin/Harbor12345
(2)輸入用戶名和密碼登錄界面后可以創(chuàng)建一個(gè)新項(xiàng)目。點(diǎn)擊“+項(xiàng)目”按鈕
(3)填寫(xiě)項(xiàng)目名稱為“my”,點(diǎn)擊“確定”按鈕,創(chuàng)建新項(xiàng)目
(4)此時(shí)可使用 Docker 命令在本地通過(guò) 127.0.0.1 來(lái)登錄和推送鏡像。默認(rèn)情況下,Registry 服務(wù)器在端口 80 上偵聽(tīng)。

在這里插入圖片描述
在這里插入圖片描述

登錄到Harbor

docker login http://127.0.0.1
或者
docker login -u admin -p Harbor12345 http://127.0.0.1

在這里插入圖片描述

下載鏡像測(cè)試

docker pull nginx

在這里插入圖片描述

將鏡像打標(biāo)簽

[root@localhost harbor]# docker tag nginx:latest 127.0.0.1/yan/nginx:v1
格式:docker tag 鏡像:標(biāo)簽 倉(cāng)庫(kù)IP/項(xiàng)目名稱/鏡像名:標(biāo)簽

在這里插入圖片描述

上傳鏡像到 Harbor

[root@localhost harbor]# docker push 127.0.0.1/yan/nginx:v1

在這里插入圖片描述
在這里插入圖片描述

原文鏈接:https://blog.csdn.net/weixin_66946305/article/details/125732965

欄目分類
最近更新