網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
前言
之前我們搭建了本地私有倉(cāng)庫(kù),但是本地倉(cāng)庫(kù)的管理和使用比較麻煩,個(gè)原生的私有倉(cāng)庫(kù)并不好用,所以我們采用harbor私有倉(cāng)庫(kù),也叫私服,更加人性化。
一、Harbor概述
- Harbor是VMware公司開源的企業(yè)級(jí)Docker Registry項(xiàng)目,其目標(biāo)是幫助用戶迅速搭建一個(gè)企業(yè)級(jí)的Docker Registry服務(wù)。
- Harbor以Docker 公司開源的Registry 為基礎(chǔ),提供了圖形管理UI、基于角色的訪問(wèn)控制(Role Based AccessControl)、AD/LDAI們成以心宙計(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:是一個(gè)nginx的前端代理,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鏡像有不同的讀寫權(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)求,如果不包含Docker 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ù)。Docker數(shù)據(jù)存儲(chǔ)在文件系統(tǒng),但是分組信息存儲(chǔ)在數(shù)據(jù)庫(kù)。
- 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私有倉(cāng)庫(kù)搭建
(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參數(shù)文件==
vim /usr/local/harbor/harbor.cfg
#==第5行修改==
hostname = 192.168.48.14
安裝harbor鏡像
sh /usr/local/harbor/install.sh
查看鏡像與容器:
docker ps
docker images
物理機(jī)訪問(wèn)server IP
192.168.48.14
用戶名:admin
密碼:Harbor12345
(3)新建項(xiàng)目
(4)鏡像推送
#登錄私有倉(cāng)庫(kù)
docker login -u admin -p Harbor12345 http://192.168.48.14
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.48.14"]
}
#下載鏡像進(jìn)行測(cè)試
docker pull nginx
#鏡像打標(biāo)簽
docker tag nginx 192.168.48.14/xy/nginx:v1
#上傳鏡像到Harbor
docker push 192.168.48.14/xy/nginx:v1
瀏覽器訪問(wèn)倉(cāng)庫(kù),查看鏡像
(5)從私有倉(cāng)庫(kù)下載鏡像
使用另外一臺(tái)服務(wù)器,進(jìn)行鏡像下載
#添加私有倉(cāng)庫(kù)地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.48.14"]
}
#下載鏡像
#docker pull 私有倉(cāng)庫(kù)地址/倉(cāng)庫(kù)名/鏡像名:標(biāo)簽
docker pull 192.168.48.14/xy/nginx:v1
查看Hardor日志:
(6)Harbor管理
可以使用 docker-compose 來(lái)管理 Harbor。一些有用的命令如下所示,必須在與docker-compose.yml 相同的目錄中運(yùn)行。
修改 Harbor.cfg 配置文件:
- 要更改 Harbour 的配置文件時(shí),請(qǐng)先停止現(xiàn)有的 Harbour 實(shí)例并更新 Harbor.cfg;
- 然后運(yùn)行 prepare 腳本來(lái)填充配置;
- 最后重新創(chuàng)建并啟動(dòng) Harbour 的實(shí)例。
#卸載
docker-compose down -v
#編輯配置文件
vim harbor.cfg
#填充配置
./prepare
#啟動(dòng)Harbor
docker-compose up -d
#如果報(bào)錯(cuò)
解決思路
關(guān)閉防火墻、重啟docker
systemctl stop firewalld
setenfore 0
systemctl restart docker
原文鏈接:https://blog.csdn.net/qq1356059950/article/details/126146647
相關(guān)推薦
- 2023-04-01 python加速器numba使用詳解_python
- 2022-09-16 Android12四大組件之Activity生命周期變化詳解_Android
- 2022-11-14 Python中__init__.py文件的作用_python
- 2022-06-22 利用Docker?運(yùn)行?python?簡(jiǎn)單程序_docker
- 2022-03-14 Android 截屏在surfaceview上失敗的問(wèn)題
- 2023-03-23 python跳出雙層循環(huán)的方法_python
- 2022-04-07 你知道怎么在?HTML?頁(yè)面中使用?React嗎_React
- 2022-10-09 C#使用struct類型作為泛型Dictionary<TKey,TValue>的鍵_C#
- 最近更新
-
- 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概述快速入門
- 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)程分支