網站首頁 編程語言 正文
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- Harbor概述
- Harbor的概念
- Harbor的特性
- Harbor的構成
- Harbor 部署
- 部署 Docker-Compose 服務
- 部署 Harbor服務
- 查看Harbor啟動鏡像
- 創建一個新項目
- 登錄到Harbor
- 下載鏡像測試
- 將鏡像打標簽
- 上傳鏡像到 Harbor
Harbor概述
Harbor的概念
Harbor是VMware公司開源的企業級Docker Registry項目,其目標是幫助用戶迅速搭建一個企業級的Docker Registry服務
Harbor以 Docker 公司開源的Registry 為基礎,提供了圖形管理UI、基于角色的訪問控制(Role Based AccessControl)、AD/LDAP集成、以及審計日志(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: 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服務發起的請求,如果不包含Token,會被重定向到Token服務,獲得Token后再重新向Registry 進行請求
Database (harbor-db) :為core services提供數據庫服務,負責儲存用戶權限、審計日志、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 部署
環境準備:
Harbor服務器 192.168.132.88 docker-ce、docker-compose、harbor-offline-v1.2.2
client服務器 192.168.132.22docker-ce
部署 Docker-Compose 服務
[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內核中支持邏輯卷管理的通用設備映射機制,
它為實現用于存儲資源管理的塊設備驅動提供了一個高度模塊化的內核架構。
device mapper存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
###################
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#設置阿里云鏡像源
[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
#無論何時執行未知腳本都是有風險的事情,所以在執行腳本前可以先查看腳本是否包含惡意代碼。
[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服務
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
關于 Harbor.cfg 配置文件中有兩類參數:所需參數和可選參數
1、所需參數:這些參數需要在配置文件 Harbor.cfg 中設置。如果用戶更新它們并運行 install.sh 腳本重新安裝 Harbour, 參數將生效。具體參數如下:
●hostname:用于訪問用戶界面和 register 服務。它應該是目標機器的 IP 地址或完全限定的域名(FQDN),例如 192.168.80.10 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 為主機名
●ui_url_protocol:(http 或 https,默認為 http)用于訪問 UI 和令牌/通知服務的協議。如果共證處于啟用狀態,則此參數必須為 https。
●max_job_workers:鏡像復制作業線程。
●db_password:用于db_auth 的MySQL數據庫root 用戶的密碼。
●customize_crt:該屬性可設置為打開或關閉,默認打開。打開此屬性時,準備腳本創建私鑰和根證書,用于生成/驗證注冊表令牌。當由外部來源提供密鑰和根證書時,將此屬性設置為 off。
●ssl_cert:SSL 證書的路徑,僅當協議設置為 https 時才應用。
●secretkey_path:用于在復制策略中加密或解密遠程 register 密碼的密鑰路徑。
2、可選參數:這些參數對于更新是可選的,即用戶可以將其保留為默認值,并在啟動 Harbor 后在 Web UI 上進行更新。如果進入 Harbor.cfg,只會在第一次啟動 Harbor 時生效,隨后對這些參數的更新,Harbor.cfg 將被忽略。
注意:如果選擇通過 UI 設置這些參數,請確保在啟動 Harbor 后立即執行此操作。具體來說,必須在注冊或在 Harbor 中創建任何新用戶之前設置所需的 auth_mode。當系統中有用戶時(除了默認的 admin 用戶), auth_mode 不能被修改。 具體參數如下:
●Email:Harbor 需要該參數才能向用戶發送“密碼重置”電子郵件,并且只有在需要該功能時才啟用。請注意,在默認情況下 SSL 連接時沒有啟用。如果 SMTP 服務器需要 SSL,但不支持 STARTTLS,那么應該通過設置啟用 SSL email_ssl = TRUE。
●harbour_admin_password:管理員的初始密碼,只在 Harbour 第一次啟動時生效。之后, 此設置將被忽略,并且應在 UI 中設置管理員的密碼。請注意,默認的用戶名/密碼是admin/Harbor12345。
●auth_mode:使用的認證類型,默認情況下,它是 db_auth,即憑據存儲在數據庫中。對于LDAP身份驗證,請將其設置為 ldap_auth。
●self_registration:啟用/禁用用戶注冊功能。禁用時,新用戶只能由 Admin 用戶創建,只有管理員用戶可以在 Harbour 中創建新用戶。注意:當 auth_mode 設置為 ldap_auth 時,自注冊功能將始終處于禁用狀態,并且該標志被忽略。
●Token_expiration:由令牌服務創建的令牌的到期時間(分鐘),默認為 30 分鐘。
●project_creation_restriction:用于控制哪些用戶有權創建項目的標志。默認情況下,每個人都可以創建一個項目。如果將其值設置為“adminonly”,那么只有 admin 可以創建項目。
●verify_remote_cert:打開或關閉,默認打開。此標志決定了當Harbor與遠程 register 實例通信時是否驗證 SSL/TLS 證書。 將此屬性設置為 off 將繞過 SSL/TLS 驗證,這在遠程實例具有自簽名或不可信證書時經常使用。
另外,默認情況下,Harbour 將鏡像存儲在本地文件系統上。在生產環境中,可以考慮 使用其他存儲后端而不是本地文件系統,如 S3、Openstack Swif、Ceph 等對象存儲。但需要更新 common/templates/registry/config.yml 文件。
查看Harbor啟動鏡像
[root@localhost harbor]# cd /usr/local/harbor/
[root@localhost harbor]# docker-compose ps
創建一個新項目
(1)瀏覽器訪問:http://192.168.13.10登錄 Harbor WEB UI 界面,默認的管理員用戶名和密碼是 admin/Harbor12345
(2)輸入用戶名和密碼登錄界面后可以創建一個新項目。點擊“+項目”按鈕
(3)填寫項目名稱為“my”,點擊“確定”按鈕,創建新項目
(4)此時可使用 Docker 命令在本地通過 127.0.0.1 來登錄和推送鏡像。默認情況下,Registry 服務器在端口 80 上偵聽。
登錄到Harbor
docker login http://127.0.0.1
或者
docker login -u admin -p Harbor12345 http://127.0.0.1
下載鏡像測試
docker pull nginx
將鏡像打標簽
[root@localhost harbor]# docker tag nginx:latest 127.0.0.1/yan/nginx:v1
格式:docker tag 鏡像:標簽 倉庫IP/項目名稱/鏡像名:標簽
上傳鏡像到 Harbor
[root@localhost harbor]# docker push 127.0.0.1/yan/nginx:v1
原文鏈接:https://blog.csdn.net/weixin_66946305/article/details/125732965
相關推薦
- 2022-04-11 Linux系統?Centos7.4手動在線升級到Centos7.7_Linux
- 2022-05-21 通過StatefulSet部署有狀態服務應用實現方式_服務器其它
- 2022-12-01 .NET?Core部署為Windows服務的詳細步驟_實用技巧
- 2022-01-19 el-table 定位 跳轉 至指定 行 位置,保證數據更新后位置不變
- 2022-05-17 C++設計模式狀態模式(State)
- 2022-09-29 Python模塊域名dnspython解析_python
- 2022-07-08 android?studio集成unity導出工程的實現_Android
- 2023-02-02 Go并發與鎖的兩種方式該如何提效詳解_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支