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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...