Harbor企業級私服Docker鏡像倉庫搭建及應用

来源:https://www.cnblogs.com/wei325/archive/2022/07/20/16468479.html
-Advertisement-
Play Games

一、簡介 Docker Hub作為Docker預設官方公共鏡像,如果想要自己搭建私有鏡像,Harbor是企業級鏡像庫非常好的選擇。 所謂私有倉庫,也就是在本地(區域網)搭建的一個類似公共倉庫的東西,搭建好之後,我們可以將將鏡像提交到私有倉庫中。這樣我們既能使用Docker來運行我們的項目鏡像, 也避 ...


一、簡介

Docker Hub作為Docker預設官方公共鏡像,如果想要自己搭建私有鏡像,Harbor是企業級鏡像庫非常好的選擇。
所謂私有倉庫,也就是在本地(區域網)搭建的一個類似公共倉庫的東西,搭建好之後,我們可以將將鏡像提交到私有倉庫中。這樣我們既能使用Docker來運行我們的項目鏡像,
也避免了商業項目暴露出去的風險。

Harbor作為一個企業級私有Registry伺服器,提供了更好的性能和安全,提升了用戶使用Registry構建和運行環境傳輸鏡像的效率。雖然Harbor和Registry都是私有鏡像倉庫的選擇,但是Harbor的企業級特性更強,因此也是更多企業級用戶的選擇。

Harbor實現了基於角色的訪問控制機制,並通過項目來對鏡像進行組織和訪問許可權的控制,也常常和K8S中的namespace結合使用。此外,Harbor還提供了圖形化的管理界面,我們可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。

有關Harbor的架構,可以參考閱讀這一篇《Harbor整體架構》一文,裡面講述了Harbor的6大核心組件構成,有興趣的朋友可以一讀。

下麵列出了Harbor的搭建過程

下麵就詳細的基於Registry搭建私有倉庫的步驟,首先我們可以準備兩台伺服器,這裡我有兩台Linux服務主機,他們的角色如下:

主機名 角色 備註
192.168.101.20 Harbor鏡像庫 部署Harbor,推送鏡像
192.168.101.21 鏡像使用 從Harbor伺服器下載鏡像使用

兩台機器記得關了防火牆

#查看防火牆狀態
systemctl status firewalld.service
#關閉防火牆
systemctl stop firewalld.service
#永久關閉防火牆
systemctl disable firewalld.service

二、搭建企業級鏡像倉庫

2.1 一些準備工作

(1)安裝docker
如果還沒有安裝docker,那麼請先安裝docker,已安裝則跳過。

#安裝需要的安裝包
yum install -y yum-utils
#設置鏡像倉庫為阿裡雲的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum索引安裝包
yum makecache fast
#安裝docker
yum install docker-ce docker-ce-cli containerd.io 
#啟動docker,設置docker開機啟動
systemctl start docker && systemctl enable docker

驗證:

docker --version

(2) 安裝docker-compose

 這裡選擇Github源:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

驗證:

docker-compose --version

(3)下載harbor離線包

下載地址:https://github.com/goharbor/harbor/releases

這裡選擇版本為v2.5.3,下載完成後傳輸到你的伺服器上並解壓,或伺服器上直接下載,這裡伺服器上直接下載:

[root@localhost ~]# mkdir dev
[root@localhost ~]# cd dev
[root@localhost dev]# wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz

解壓

[root@localhost dev]# tar zvxf harbor-offline-installer-v2.5.3.tgz

修改harbor配置文件

#進入解壓文件夾
[root@localhost dev]# cd harbor
#把配置文件harbor.yml.tmpl複製一份為harbor.yml
[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
#修改配置文件
[root@localhost harbor]# vi harbor.yml

修改harbor.yml文件內容

# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.101.20

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
#https:
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
 # private_key: /your/private/key/path

# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true
#   # put your cert and key files on dir
#   dir: /etc/harbor/tls/internal

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: 123456

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123
  # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
  max_idle_conns: 100
  # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
  # Note: the default number of connections is 1024 for postgres of harbor.
  max_open_conns: 900

# The default data volume

要修改的點:

  • hostname:改為自己的ip或功能變數名稱

  • https的註釋掉,區域網下不需要

  • harbor_admin_password:設置密碼,賬號固定是admin了

2.2執行安裝

[root@localhost harbor]# ./install.sh

安裝完成,輸入地址http://192.168.101.20訪問,因為埠是80所以不需要輸了,如果改了別的埠,則後面帶上埠。

登錄進去

到這裡harbor鏡像倉庫就搭好了,下麵演示怎麼用鏡像倉庫。

三、harbor鏡像倉庫使用

3.1新建項目

3.2登陸docker倉庫

項目建好了,如何推送呢,首先推送的伺服器要修改本機的配置文件並重啟docker,註意重啟docker前先重新載入配置文件。

vi /etc/docker/daemon.json

添加 "insecure-registries":[harbor地址:埠]

{
        "insecure-registries":["192.168.101.20"]
}

重啟docker

[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker

然後登陸docker倉庫
docker login<harbor所在伺服器ip>:<埠>
然後輸入用戶名密碼

[root@localhost harbor]# docker login 192.168.101.20
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

現在登陸成功了

3.3新建.NET6項目生成鏡像推到docker倉庫

新建一個.NET6項目,發佈,在發佈文件夾建一個Dockerfile文件,內容為:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
COPY . .
ENTRYPOINT ["dotnet", "DoetNet6.Demo.dll"]

項目目錄為:

然後把這些文件上傳到上面的192.168.101.20伺服器的/wwwroot文件夾下

執行 docker build -t <鏡像名> . 生成鏡像,註意後面有一個點不要忽略。

[root@localhost publish]# docker build -t dotnet6demo .

然後成功生成鏡像

然後把鏡像推到harbor倉庫

給鏡像打標簽

docker tag <本地鏡像名稱>:<版本號> <harbor地址:埠>/<harbor項目名稱>/<harbor的鏡像名>:<harbor版本號>
推送到harbor倉庫

docker push <harbor地址:埠>/<harbor項目名稱>/<harbor的鏡像名>:<harbor版本號>

[root@localhost publish]# docker tag dotnet6demo:latest 192.168.101.20/baozi/dotnet6demo:v1
[root@localhost publish]# docker push 192.168.101.20/baozi/dotnet6demo:v1

這時候我們的鏡像倉庫裡面就有了

3.4拉取docker鏡像運行

現在用另一臺機器ip:192.168.101.21拉取鏡像運行

首先安裝docker,上面已經有了。

然後修改docker下的daemon.json配置,把habor地址填進去,上面也有了

vi /etc/docker/daemon.json

添加 "insecure-registries":[harbor地址:埠]

{
        "insecure-registries":["192.168.101.20"]
}

重啟docker

[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker

拉取鏡像

docker pull <harbor地址:埠>/<項目名稱>/<鏡像名>:<標簽版本>

拉取鏡像
docker pull 192.168.101.20/baozi/dotnet6demo:v1

![](https://img2022.cnblogs.com/blog/630011/202207/630011-20220720020937540-601697789.png)

運行鏡像

docker run -d --name dotnet6demo -p 5001:80 192.168.101.20/baozi/dotnet6demo:v1

-d:後臺運行

--name:docker名稱

-p:把本機的5001埠映射到docker的80埠

驗證:訪問http://192.168.101.21:5001

訪問成功!整個harbor的搭建,鏡像推送,鏡像拉取運行整個流程就完成了!

最後有一點要註意的是:如果項目設成私有的,拉取鏡像的伺服器要docker login xxx登陸harbor才能拉取成功。

github下載harbor慢的話,這裡雲盤取:https://pan.baidu.com/s/1lZX_BDZpoYtKd6u4PzdrMw?pwd=8y6c


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本來這段時間一直都在加緊我家“三胎”(易排通用智能規劃平臺)建設,畢竟我們的通用規劃平臺原定6月初就能上線,但因為其中遇到的各種技術問題及其它項目的突發情況,導致也只能跟隨國家的003號航母,只能推遲上線,進度緊迫。經過近兩個星期的奮戰,終於將我們的【易排通用智能規劃平臺】的主要功能上線了,並做了一 ...
  • 多商戶商城系統,也稱為B2B2C(BBC)平臺電商模式多商家商城系統。可以快速幫助企業搭建類似拼多多/京東/天貓/淘寶的綜合商城。 多商戶商城系統支持商家入駐加盟,同時滿足平臺自營、旗艦店等多種經營方式。平臺可以通過收取商家入駐費,訂單交易服務費,提現手續費,簡訊通道費等多手段方式,實現整體盈利。 ...
  • 1.認識 JDBCTemplate 1.瞭解 JDBC 學習使用 JDBCTempIate 之前,我們先來瞭解一下 JDBC( Java DataBase Connectivity )。 它是Java用於連接資料庫的規範,也就是用於執行資料庫SQL語句的Java API。從JDBC的名稱上看,它似乎 ...
  • 常用慢查詢分析工具 引言 在日常的業務開發中 MySQL 出現慢查詢是很常見的 大部分情況下會分為兩種情況 1、業務增長太快 2、要麼就是SQL 寫的太xx了 所以 對慢查詢 SQL 進行分析和優化很重要 其中 mysqldumpslow 是 MySQL 服務自帶的一款很好的分析調優工具 3.1 調 ...
  • 介紹 env_logger 配合 log 庫使用, log 是rust日誌庫的外觀庫,給日誌庫提供抽象的記錄介面, log使用巨集,如info!() trace!()記錄日誌 假如需要替換當前使用的日誌庫,只需將初始化相關的代碼和toml文件修改 env_logger 通過配置環境變數中 RUST_L ...
  • 此問題全網找了很久,也困擾了我很久,始終沒有找到解決方法。今天結合網上其他問題的帖子,自己研究的半天,終於找到了這個解決方法,經親自測試可行。歡迎大牛指導指正。 有時客戶收藏的系統地址是認證端的,然後登錄之後會轉向https://***:101/signin-oidc 報以下錯誤 An unhand ...
  • 一、項目說明 NewLife.Redis.Core基於新生命團隊NewLife.Redis的封裝,支持.NETCore3/.NET5/.NET6。 NewLife.Redis 是一個Redis客戶端組件,以高性能處理大數據實時計算為目標。 源碼: https://github.com/NewLife ...
  • VisualSVN是Visual Studio的專業Subversion集成插件,集成了Subversion和Apache簡化了手工配置Subversion的繁瑣步驟。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...