云原生--核心組件-容器篇-7-Docker私有鏡像倉庫--Harbor

1、Harbor的定義與核心作用

  • 定義:
    Harbor是由VMware開源的企業級容器鏡像倉庫系統,后捐贈給 CNCF (Cloud Native Computing Foundation)。它基于Docker Registry擴展了企業級功能,用于存儲、分發和管理容器鏡像(如Docker、OCI標準鏡像)及其他制品(如Helm Chart、CNAB等)。

  • 核心作用:

    • 鏡像管理:提供安全、高效的鏡像存儲與版本控制。
    • 權限控制:支持細粒度的訪問權限管理。
    • 安全掃描:集成漏洞掃描工具(如Clair)確保鏡像安全。
    • 鏡像復制:支持跨數據中心或云環境的鏡像同步。
    • 審計日志:記錄用戶操作,滿足合規性要求。

2、Harbor的核心功能

(1)、企業級權限管理

  • RBAC(基于角色的訪問控制):
    • 支持按項目分配用戶權限(如Guest、Developer、Admin)。
    • 可自定義角色,根據用戶的角色來管理對項目和資源的訪問權限,滿足多團隊協作需求。
  • 集成身份認證:
    • 支持對接LDAP/AD,與企業現有用戶體系無縫集成。

(2)、鏡像安全與掃描

  • 漏洞掃描:
    • 集成Clair等工具,自動掃描鏡像中的已知漏洞。
    • 可配置鏡像推送時的自動掃描策略。
  • 內容信任:
    • 支持鏡像簽名(通過Notary),確保鏡像來源可信。

擴展:Clair

Clair是一個開源項目,專注于為容器鏡像提供漏洞靜態分析的能力。它由CoreOS開發(后來CoreOS被Red Hat收購),旨在幫助用戶識別并解決容器鏡像中的安全問題。通過分析容器鏡像的各個層,并將它們與已知的安全漏洞數據庫進行比較,Clair能夠檢測出其中包含的軟件包是否有任何公開的、已知的安全漏洞。

Clair工作流程:

  1. 用戶提交需要掃描的容器鏡像至Clair。
  2. Clair分析該鏡像的各層,并提取出操作系統及軟件包的信息。
  3. 將提取的信息與Clair的漏洞數據庫進行對比。
  4. 根據對比結果生成漏洞報告,顯示受影響的軟件包、相關漏洞的描述以及建議的解決方案。
  5. 用戶根據報告更新鏡像,修補發現的漏洞。

(3)、鏡像生命周期管理

  • 鏡像復制:
    • 支持將鏡像同步到遠程Harbor實例(如災備中心或多地部署)。
  • 垃圾回收:
    • 自動清理未使用的鏡像層,釋放存儲空間。
  • 版本控制:
    • 支持保留或刪除舊版本鏡像,管理存儲成本。

(4)、用戶界面與擴展性

  • Web界面:
    • 提供圖形化界面管理項目、用戶、鏡像及操作日志。
  • 鏡像刪除回收站:提供安全地刪除鏡像以及從回收站恢復的功能。
  • API集成:
    • 提供RESTful API,支持與CI/CD工具(如Jenkins、GitLab)集成。
  • 存儲擴展:
    • 支持將鏡像存儲在對象存儲(如AWS S3、阿里云OSS)中,實現高可用與彈性擴展。

3、Harbor的架構

(1)、架構分層

  • 代理層:
    • Nginx反向代理:接收客戶端請求(如瀏覽器、Docker CLI),并轉發到后端服務。
  • 功能層:
    • Portal:Web前端界面,基于Angular開發。
    • Core Service:核心業務邏輯組件,包括UI、token服務、API服務等,處理用戶請求、權限驗證等業務邏輯。
    • Job Service:異步任務處理(如鏡像復制、漏洞掃描)。
    • Registry:基于Docker Registry的鏡像存儲引擎。核心組件,負責存儲Docker鏡像,并處理Docker客戶端的push和pull請求。
    • Clair(可選):漏洞掃描工具。
    • Log collector:收集各個組件的日志信息,便于問題排查和審計。
  • 數據層:
    • PostgreSQL:存儲元數據(如項目、用戶、權限)。
    • Redis:緩存及任務隊列管理。
    • 存儲后端:本地文件系統或對象存儲(如S3)。

(2)、核心組件

在這里插入圖片描述

4、Harbor的安裝與配置

(1)、環境要求

  • 硬件:至少2核CPU、4G內存、40G存儲。
  • 軟件:Docker 1.10+、Docker Compose 1.6+。

(2)、安裝步驟(以v2.4.1為例)

1. 下載安裝包:
bash示例:

wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz
tar zxvf harbor-online-installer-v2.4.1.tgz
cd harbor

2. 配置harbor.yml:

  • 修改hostname(如harbor.example.com)。
  • 配置數據庫密碼、管理員密碼等。

3. 啟動Harbor:
bash示例:

./install.sh

4. HTTPS 配置(可選):

  • 生成SSL證書(如Let’s Encrypt)。
  • 修改harbor.yml中的HTTPS相關配置,重啟服務。

5. 部署注意事項

  • 內網環境:
    • 需配置Docker客戶端信任私有倉庫
      修改/etc/docker/daemon.json:
{"insecure-registries": ["your-harbor-host:port"]
}

6.重啟docker

systemctl restart docker

7.鏡像推送測試
bash示例:

docker tag my-image your-harbor-host:port/project/image:tag
docker push your-harbor-host:port/project/image:tag

5、Harbor的典型應用場景

(1)、企業級私有鏡像管理倉庫

  • 場景:
    • 多團隊協作開發,需隔離鏡像倉庫。
    • 需要權限控制(如限制敏感鏡像訪問)。

bash示例:

# 創建項目并分配權限
harbor admin create-project --project-name my-team --public false
harbor admin add-user-to-project --user admin --project my-team --role Admin

(2)、安全合規與漏洞管理

  • 場景:
    • 需確保鏡像無已知漏洞(如CVE)。
    • 需審計鏡像操作日志。
  • 操作:
    • 在Harbor Web界面啟用漏洞掃描策略。
    • 通過API或CLI導出審計日志。

(3)、跨數據中心鏡像同步

利用其鏡像復制功能,可以在不同的地理位置或數據中心之間同步鏡像,保證服務的連續性和可靠性。

  • 場景:
    • 在多地部署Kubernetes集群,需同步鏡像。
    • 災備場景下鏡像備份到異地倉庫。
  • 配置:
    • 在Harbor中配置“復制目標”(遠程Harbor實例),設置定時任務。

6、Harbor的優勢與特點

(1)、與Docker Registry的對比

在這里插入圖片描述

(2)、核心優勢

  • 安全增強:漏洞掃描、鏡像簽名、細粒度權限控制。
  • 易用性:圖形化界面簡化鏡像和項目管理。
  • 企業級擴展:支持高可用部署、多云存儲、與 CI/CD 工具集成。

7、常見問題與解決方案

(1)、Harbor安裝后無法訪問Web界面?

  • 原因:
    • 防火墻未開放端口(默認80/443)。
    • DNS解析問題(需確保hostname可解析)。
  • 解決:
    bash示例:
# 檢查服務狀態
docker ps -a | grep harbor
# 查看日志
docker logs harbor-core

(2)、鏡像推送時提示權限不足?

  • 原因:
    • 用戶未被分配項目權限。
    • 未登錄Harbor或密碼錯誤。
  • 解決:
    bash示例:
docker logout your-harbor-host:port
docker login your-harbor-host:port -u admin -p your_password

(3)、如何啟用漏洞掃描?

  • 步驟:
    1. 在Harbor Web界面啟用Clair組件。
    2. 進入項目設置,開啟漏洞掃描策略。
    3. 推送鏡像后,查看掃描結果。

8、總結

  • Harbor是企業級容器鏡像管理的首選解決方案,通過權限控制、安全掃描、鏡像復制等功能,解決了Docker Registry的不足。
  • 適用場景:
    • 多團隊協作開發。
    • 需要嚴格的安全合規要求。
    • 跨數據中心或云環境部署。
  • 關鍵價值:
    • 安全可控:漏洞掃描與權限隔離。
    • 高效管理:圖形化界面與自動化任務。
    • 靈活擴展:支持多種存儲后端與多云環境。

逆風前行,Dare To Be!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77648.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java項目與技術棧場景題深度解析

Java項目與技術棧場景題深度解析 在互聯網大廠Java求職者的面試中,經常會被問到關于Java項目或技術棧的場景題。本文通過一個故事場景來展示這些問題的實際解決方案。 第一輪提問 面試官:馬架構,歡迎來到我們公司的面試現場。請問您對Java…

SpringMVC 靜態資源處理 mvc:default-servlet-handler

我們先來看看效果,當我把這一行注釋掉的時候&#xff1a; 我們來看看頁面&#xff1a; 現在我把注釋去掉&#xff1a; 、 可以看到的是&#xff0c;這個時候又可以訪問了 那么我們就可以想&#xff0c;這個 <mvc:default-servlet-handler />它控制著我們頁面的訪問…

【leetcode】最長公共子路徑問題

滾動hash 滾動哈希&#xff08;rolling hash&#xff09;也叫 Rabin-Karp 字符串哈希算法&#xff0c;它是將某個字符串看成某個進制下的整數&#xff0c;并將其對應的十進制整數作為hash值。 滾動hash算法的推導 假設有一個長度為n的數組a[0],a[1],a[2],…a[n-1]&#xff0…

【Linux網絡】:套接字之UDP

一、UDP和TCP協議 TCP &#xff08;Transmission Control Protocol 傳輸控制協議&#xff09;的特點&#xff1a; 傳輸層協議有連接&#xff08;在正式通信前要先建立連接&#xff09;可靠傳輸&#xff08;在內部幫我們做可靠傳輸工作&#xff09;面向字節流 UDP &#xff08;U…

React19 useOptimistic 用法

用法 樂觀更新 發起異步請求時&#xff0c;先假設請求會成功立即更新 UI 給用戶反饋若請求最終失敗&#xff0c;再將 UI 恢復到之前的狀態 const [optimisticState, addOptimistic] useOptimistic(state, updateFn) 參數 state&#xff1a;實際值&#xff0c;可以是 useSta…

Deepseek-v3+cline+vscode java自動化編程

1、Deepseek DeepSeek 充值后&#xff0c;創建apikey 2、vscode Visual Studio Code - Code Editing. Redefined 3、下載插件cline 4、配置deepeseek-v3 的密鑰到cline 5、不可用 在開始的幾次調用能正常使用起來&#xff0c;用了幾次后&#xff0c;不能使用了&#xff0c;請求…

數據分析案例:環境數據分析

目錄 數據分析案例&#xff1a;環境數據分析1. 項目背景2. 數據加載與預處理2.1 數據說明2.2 讀取與清洗 3. 探索性數據分析&#xff08;EDA&#xff09;3.1 時序趨勢3.2 日內變化3.3 氣象與污染物相關性 4. 特征工程4.1 時間特征4.2 滯后與滾動統計4.3 目標變量 5. 模型構建與…

網絡原理 - 8

目錄 補充 網絡層 IP 協議 基本概念&#xff1a; 協議頭格式 地址管理 如何解決 IP 地址不夠用呢&#xff1f;&#xff1f;&#xff1f; 1. 動態分配 IP 地址&#xff1a; 2. NAT 機制&#xff08;網絡地址映射&#xff09; 3. IPv6 網段劃分 一些特殊的 IP 地址 …

向量檢索新選擇:FastGPT + OceanBase,快速構建RAG

隨著人工智能的快速發展&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索增強生成&#xff09;技術日益受到關注。向量數據庫作為 RAG 系統的核心基礎設施&#xff0c;堪稱 RAG 的“記憶中樞”&#xff0c;其性能直接關系到大模型生成內容的精準度與…

dify對接飛書云文檔,并且將圖片傳入飛書文檔

前面講了如何讓dify展示圖片&#xff0c;但是如果想讓智能體回答的帶圖片的內容生成個文檔該怎么弄呢&#xff1f;今天來實踐一下。 dify工具帶的有飛書云文檔&#xff0c;正好&#xff0c;咱們就利用飛書云文檔。 1、首先配置飛書云文檔的key跟secret 注意要開頭左側的權限&a…

Linux系統之設置開機啟動運行桌面環境

Linux 開機運行級別介紹與 Ubuntu 桌面環境配置指南 一、Linux 開機運行級別(Runlevel) 在傳統的 Linux 系統(如 SysV init 初始化系統)中,運行級別定義了系統啟動時加載的服務和資源。常見的運行級別如下: 運行級別模式用途0Halt(停機模式)關閉系統1Single User Mode…

Spring Cloud Gateway配置雙向SSL認證(完整指南)

本文將詳細介紹如何為Spring Cloud Gateway配置雙向SSL認證,包括證書生成、配置和使用。 目錄結構 /my-gateway-project ├── /certs │ ├── ca.crt # 根證書 │ ├── ca.key # 根私鑰 │ ├── gateway.crt # 網關證書 │ ├── …

【虛幻5藍圖Editor Utility Widget:創建高效模型材質自動匹配和資產管理工具,從3DMax到Unreal和Unity引擎_系列第二篇】

虛幻5藍圖Editor Utility Widget 一、基礎框架搭建背景&#xff1a;1. 創建Editor Utility Widget2.根控件選擇窗口3.界面功能定位與階段4.查看繼承樹5.目標效果 二、模塊化設計流程1.材質替換核心流程&#xff1a;2.完整代碼如下 三、可視化界面UI布局1. 添加標題欄2. 構建滾動…

LabVIEW實現DMM與開關模塊掃描測量

該程序基于 LabVIEW&#xff0c;用于控制數字萬用表&#xff08;DMM&#xff09;與開關模塊進行測量掃描。通過合理配置觸發源、測量參數等&#xff0c;實現對多路信號的自動化測量與數據獲取&#xff0c;在電子測試、工業測量等領域有廣泛應用。 ? 各步驟功能詳解 開關模塊…

OpenAvatarChat要解決UnicodeDecodeError

錯誤信息如下 ailed to import handler module client/h5_rendering_client/client_handler_lam Traceback (most recent call last):File "E:\Codes\Python\aigc\OpenAvatarChat\src\demo.py", line 82, in <module>main()File "E:\Codes\Python\aigc\O…

數據庫中的主鍵(Primary Key)

數據庫中的主鍵&#xff08;Primary Key&#xff09; 主鍵是數據庫表中用于唯一標識每一行記錄的一個或多個列的組合&#xff0c;是關系型數據庫中的重要概念。 主鍵的核心特性 唯一性&#xff1a;主鍵值必須唯一&#xff0c;不能重復非空性&#xff1a;主鍵列不能包含NULL值…

MySQL 9.3 正式發布!備份、用戶管理與開發支持迎來革命性升級

開源數據庫領域的標桿產品MySQL迎來重大更新——MySQL 9.3正式發布&#xff01;作為企業級數據庫的“扛把子”&#xff0c;此次版本更新聚焦備份效率、用戶管理精細化、開發支持增強三大核心領域&#xff0c;同時在高可用性和性能優化上實現突破。以下為你逐一解讀新版本的亮點…

Rmarkdown輸出為pdf的方法與問題解決

R 是一種在數據分析與統計計算領域廣泛使用的編程語言。其關鍵優勢之一是能夠生成高質量的報告和文檔&#xff0c;這些報告和文檔可以使用 RMarkdown 輕松定制和更新。在本文中&#xff0c;我們將探討使用 R 從 RMarkdown 文件生成.pdf 文件 1.生成方法 新建Rmarkdown&#xf…

畢業設計-基于機器學習入侵檢測系統

選題背景與意義 隨著互聯網技術的飛速發展&#xff0c;網絡在人們的生活、工作各個領域都發揮著至關重要的作用。但與此同時&#xff0c;網絡安全問題也日益嚴峻&#xff0c;各類網絡攻擊事件頻發&#xff0c;給個人、企業乃至國家都帶來了巨大的經濟損失和安全威脅。入侵檢測…

React 實現愛心花園動畫

主頁&#xff1a; import React, { useEffect, useRef, useState } from react; import /assets/css/Love.less; import { Garden } from /utils/GardenClasses;// 組件屬性接口 interface LoveAnimationProps {startDate?: Date; // 可選的開始日期messages?: { // 可…