網(wǎng)站首頁(yè) 編程語(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的特性
- 基于角色控制: 用戶和倉(cāng)庫(kù)都是基于項(xiàng)目進(jìn)行組織的,而用戶在項(xiàng)目中可以擁有不同的權(quán)限
- 基于鏡像的復(fù)制策略: 鏡像可以在多個(gè)Harbor實(shí)例之間進(jìn)行復(fù)制(同步)
- 支持LDAP/AD: Harbor 可以集成企業(yè)內(nèi)部有的AD/LDAP (類似數(shù)據(jù)庫(kù)的一-張表),用于對(duì)已經(jīng)存在的用戶認(rèn)證和管理
- 鏡像刪除和垃圾回收: 鏡像可以被刪除,也可以回收鏡像占用的空間
- 圖形化用戶界面: 用戶可以通過(guò)瀏覽器來(lái)瀏覽,搜索鏡像倉(cāng)庫(kù)以及對(duì)項(xiàng)目進(jìn)行管理
- 審計(jì)管理: 所有針對(duì)鏡像倉(cāng)庫(kù)的操作都可以被記錄追溯,用于審計(jì)管理
- 支持RESTful API: RESTful API提供給管理員對(duì)于Harbor 更多的操控,使得與其它管理軟件集成變得更容易
- 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
相關(guān)推薦
- 2022-08-16 一篇文章徹底搞懂Python切片操作_python
- 2022-08-17 python可視化分析繪制帶趨勢(shì)線的散點(diǎn)圖和邊緣直方圖_python
- 2022-05-08 jquery實(shí)現(xiàn)淘寶詳情頁(yè)選擇套餐_jquery
- 2022-07-15 Golang配置解析神器go?viper使用詳解_Golang
- 2022-09-04 從docker鏡像里提取dockerfile的兩種方法_docker
- 2022-09-06 React封裝CustomSelect組件思路詳解_React
- 2022-06-08 Python使用PyYAML庫(kù)讀寫(xiě)yaml文件的方法_python
- 2022-02-12 Flutter項(xiàng)目中有些依賴不支持64位的library的解決方式
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支