harbor倉庫部署

来源:https://www.cnblogs.com/tushanbu/archive/2022/08/11/16578339.html
-Advertisement-
Play Games

harbor倉庫部署 無論是使用Docker-distribution去自建倉庫,還是通過官方鏡像跑容器的方式去自建倉庫,通過前面的演示我們可以發現其是非常的簡陋的,還不如直接使用官方的Docker Hub去管理鏡像來得方便,至少官方的Docker Hub能夠通過web界面來管理鏡像,還能在web界 ...


harbor倉庫部署


目錄

無論是使用Docker-distribution去自建倉庫,還是通過官方鏡像跑容器的方式去自建倉庫,通過前面的演示我們可以發現其是非常的簡陋的,還不如直接使用官方的Docker Hub去管理鏡像來得方便,至少官方的Docker Hub能夠通過web界面來管理鏡像,還能在web界面執行搜索,還能基於Dockerfile利用Webhooks和Automated Builds實現自動構建鏡像的功能,用戶不需要在本地執行docker build,而是把所有build上下文的文件作為一個倉庫推送到github上,讓Docker Hub可以從github上去pull這些文件來完成自動構建。

但無論官方的Docker Hub有多強大,它畢竟是在國外,所以速度是最大的瓶頸,我們很多時候是不可能去考慮使用官方的倉庫的,但是上面說的兩種自建倉庫方式又十分簡陋,不便管理,所以後來就出現了一個被 CNCF 組織青睞的項目,其名為Harbor。

Harbor簡介

Harbor是由VMWare在Docker Registry的基礎之上進行了二次封裝,加進去了很多額外程式,而且提供了一個非常漂亮的web界面。

Project Harbor是一個開源的可信雲本地註冊項目,用於存儲、標記和掃描上下文。
Harbor擴展了開源Docker分發版,增加了用戶通常需要的功能,如安全、身份和管理。
Harbor支持高級特性,如用戶管理、訪問控制、活動監視和實例之間的複製。

Harbor的功能

Harbor的核心功能是存儲和管理Artifact
訪問控制:訪問控制是多個用戶使用同一個倉庫存儲Artifact時的基本需求,也是Harbor早期版本提供的主要功能之一
鏡像簽名:鏡像在本質上是軟體的封裝形式,從安全形度來看,開發人員在部署鏡像前需要保證鏡像內容的完整性(integrity)
鏡像掃描:容器鏡像打包了代碼、軟體及其所需的運行環境,已發佈的軟體及其依賴的庫都可能存在安全漏洞
高級管理功能:Harbor在版本迭代中還根據社區反饋,為管理員及用戶提供了很多高級管理功能以支持更加複雜的使用場景,包括Artifact複製策略、存儲配額管理、Tag保留策略(Artifact保留策略)和垃圾回收等

Docker compose

Harbor在物理機上部署是非常難的,而為了簡化Harbor的應用,Harbor官方直接把Harbor做成了在容器中運行的應用,而且這個容器在Harbor中依賴類似redis、mysql、pgsql等很多存儲系統,所以它需要編排很多容器協同起來工作,因此VMWare Harbor在部署和使用時,需要藉助於Docker的單機編排工具(Docker compose)來實現。

Compose是一個用於定義和運行多容器Docker應用程式的工具。使用Compose,您可以使用一個YAML文件來配置應用程式的服務。然後,使用一個命令創建並啟動配置中的所有服務。

Harbor部署

提前進入Harbor官方文檔(https://github.com/goharbor/harbor)下載harbor-offline-installer-v2.5.3這個包,操作如下:
在左上角輸入harbor搜索




進入 Docker compose官方文檔(https://docs.docker.com/compose/)進行部署操作



分別開啟兩台機子,一臺為客戶端,一臺為鏡像倉庫端
client為客戶端,harbor為鏡像倉庫端
需要保證兩台機子都要有docker

客戶端:
[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# bash
[root@client ~]# which docker
/usr/bin/docker
[root@client yum.repos.d]# ls
CentOS-Base.repo  docker-ce.repo
[root@client yum.repos.d]#  scp docker-ce.repo 192.168.222.251:/etc/yum.repos.d/
The authenticity of host '192.168.222.251 (192.168.222.251)' can't be established.
ECDSA key fingerprint is SHA256:y11UDaNXs3AnvVUnZQfAim2VHAplF09YOvQp2NemHyk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '192.168.222.251' (ECDSA) to the list of known hosts.
[email protected]'s password: 
docker-ce.repo                                             100% 2261     1.0MB/s   00:00    
//將客戶端的docker傳給鏡像倉庫端
鏡像倉庫端:
[root@localhost2 ~]# hostnamectl set-hostname harbor
[root@localhost2 ~]# bash
[root@harbor ~]# cd /etc/yum.repos.d/
[root@harbor yum.repos.d]# ls
CentOS-Base.repo  docker-ce.repo  mysql-community-source.repo  mysql-community.repo
//查看是否有docker鏡像倉庫
[root@harbor yum.repos.d]# dnf -y install docker-ce
//進行安裝

在剛剛那個頁面的基礎上往下翻

往下翻,進行手動安裝

[root@harbor ~]# DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
[root@harbor ~]# mkdir -p $DOCKER_CONFIG/cli-plugins //創建.docker
[root@harbor ~]# ls -a
.              .bash_profile  .docker         .wget-hsts
..             .bashrc        .mysql_history  anaconda-ks.cfg
.bash_history  .config        .tcshrc         mysql57-community-release-el7-11.noarch.rpm
.bash_logout   .cshrc         .viminfo
[root@harbor ~]# ls .docker/
cli-plugins
[root@harbor cli-plugins]# ls  //將提前下載好的包拉取進來
docker-compose
[root@harbor cli-plugins]# chmod +x docker-compose //賦予執行許可權
[root@harbor cli-plugins]# ll
total 25188
-rwxr-xr-x 1 root root 25792512 Aug 11 22:07 docker-compose
[root@harbor cli-plugins]# ./docker-compose --help  //此下麵的命令都可以使用

Usage:  docker compose [OPTIONS] COMMAND

Docker Compose

Options:
      --ansi string                Control when to print ANSI control characters
                                   ("never"|"always"|"auto") (default "auto")
      --compatibility              Run compose in backward compatibility mode
      --env-file string            Specify an alternate environment file.
  -f, --file stringArray           Compose configuration files
      --profile stringArray        Specify a profile to enable
      --project-directory string   Specify an alternate working directory
                                   (default: the path of the, first specified, Compose
                                   file)
  -p, --project-name string        Project name

Commands:
  build       Build or rebuild services
  convert     Converts the compose file to platform's canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service.
  down        Stop and remove containers, networks
  events      Receive real time events from containers.
  exec        Execute a command in a running container.
  images      List images used by the created containers
  kill        Force stop service containers.
  logs        View output from containers
  ls          List running compose projects
  pause       Pause services
  port        Print the public port for a port binding.
  ps          List containers
  pull        Pull service images
  push        Push service images
  restart     Restart containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service.
  start       Start services
  stop        Stop services
  top         Display the running processes
  unpause     Unpause services
  up          Create and start containers
  version     Show the Docker Compose version information

Run 'docker compose COMMAND --help' for more information on a command.
[root@harbor cli-plugins]# pwd
/root/.docker/cli-plugins
//目前是當前用戶可以使用這個命令
[root@harbor cli-plugins]# ln -sv /root/.docker/cli-plugins/docker-compose /usr/bin/
'/usr/bin/docker-compose' -> '/root/.docker/cli-plugins/docker-compose'
//做個軟鏈接使其在系統的其他地方也可以使用
[root@harbor cli-plugins]# cd
[root@harbor ~]# which docker-compose 
/usr/bin/docker-compose
[root@harbor ~]# docker compose version
Docker Compose version v2.7.0
//查看版本
[root@harbor ~]# cd /usr/src/
[root@harbor src]# ls
debug  harbor-offline-installer-v2.5.3.tgz  kernels
//將之前下載好的包拉進這裡面
[root@harbor src]# tar xf harbor-offline-installer-v2.5.3.tgz -C /usr/local/
[root@harbor src]# ls /usr/local/
bin  etc  games  harbor  include  lib  lib64  libexec  sbin  share  src
[root@harbor src]# cd /usr/local/harbor/
[root@harbor harbor]# ls
LICENSE  common.sh  harbor.v2.5.3.tar.gz  harbor.yml.tmpl  install.sh  prepare
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml
[root@harbor harbor]# hostnamectl set-hostname harbor.example.com
[root@harbor harbor]# bash
//可以提前修改一下主機名
hostname: harbor.example.com  //修改為主機名
#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
harbor_admin_password: Harbor12345  //此為網頁訪問時的登錄密碼
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123  //資料庫的密碼
  data_volume: /data //數據存放的目錄
   # insecure The flag to skip verifying registry certificate
  insecure: false  //不安全的功能關閉了(驗證證書的)
 # are all valid.
    rotate_size: 200M   //日誌滾動(每天會自動保存一定數量的日誌會重命名為一個不同名字的文件)
    # The directory on your host that store log
    location: /var/log/harbor  //日誌存放
[root@harbor harbor]# ls
LICENSE  common.sh  harbor.v2.5.3.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  prepare
[root@harbor harbor]# ./install.sh 
//執行這個腳本
....
[Step 5]: starting Harbor ...
[+] Running 10/10
 ⠿ Network harbor_harbor        Created                                                 0.1s
 ⠿ Container harbor-log         Started                                                 0.8s
 ⠿ Container redis              Started                                                 1.9s
 ⠿ Container registryctl        Started                                                 1.9s
 ⠿ Container registry           Started                                                 2.1s
 ⠿ Container harbor-portal      Started                                                 2.1s
 ⠿ Container harbor-db          Started                                                 2.0s
 ⠿ Container harbor-core        Started                                                 2.8s
 ⠿ Container harbor-jobservice  Started                                                 3.7s
 ⠿ Container nginx              Started                                                 3.8s
✔ ----Harbor has been installed and started successfully.----
[root@harbor harbor]# ss -antl
State     Recv-Q    Send-Q        Local Address:Port         Peer Address:Port    Process   
LISTEN    0         128                 0.0.0.0:22                0.0.0.0:*                   
LISTEN    0         128               127.0.0.1:1514              0.0.0.0:*    
LISTEN    0         128                    [::]:22                   [::]:*       
LISTEN    0         128                    [::]:80                   [::]:*    

使用IP登錄管理Harbor:

登錄成功後界面:

使用Harbor的註意事項:

  1. 在客戶端上傳鏡像時一定要記得執行docker login進行用戶認證,否則無法直接push
  2. 在客戶端使用的時候如果不是用的https則必須要在客戶端的/etc/docker/daemon.json配置文件中配置insecure-registries參數
  3. 數據存放路徑應在配置文件中配置到一個容量比較充足的共用存儲中
  4. Harbor是使用docker-compose命令來管理的,如果需要停止Harbor也應用docker-compose stop來停止,其他參數請--help
[root@harbor ~]# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS                    PORTS                                   NAMES
27d358705acf   goharbor/harbor-jobservice:v2.5.3    "/harbor/entrypoint.…"   10 minutes ago   Up 10 minutes (healthy)                                           harbor-jobservice
917a7155677e   goharbor/nginx-photon:v2.5.3         "nginx -g 'daemon of…"   10 minutes ago   Up 10 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
6230fed03071   goharbor/harbor-core:v2.5.3          "/harbor/entrypoint.…"   10 minutes ago   Up 10 minutes (healthy)                                           harbor-core
290772e4a195   goharbor/harbor-registryctl:v2.5.3   "/home/harbor/start.…"   10 minutes ago   Up 10 minutes (healthy)                                           registryctl
a78c22de9b73   goharbor/redis-photon:v2.5.3         "redis-server /etc/r…"   10 minutes ago   Up 10 minutes (healthy)                                           redis
ef4560266151   goharbor/registry-photon:v2.5.3      "/home/harbor/entryp…"   10 minutes ago   Up 10 minutes (healthy)                                           registry
282d2180241e   goharbor/harbor-db:v2.5.3            "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes (healthy)                                           harbor-db
383c26c94150   goharbor/harbor-portal:v2.5.3        "nginx -g 'daemon of…"   10 minutes ago   Up 10 minutes (healthy)                                           harbor-portal
7fcbe6d544c9   goharbor/harbor-log:v2.5.3           "/bin/sh -c /usr/loc…"   11 minutes ago   Up 10 minutes (healthy)   127.0.0.1:1514->10514/tcp               harbor-log
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# ls
LICENSE  common.sh           harbor.v2.5.3.tar.gz  harbor.yml.tmpl  prepare
common   docker-compose.yml  harbor.yml            install.sh
[root@harbor harbor]# docker-compose stop
[+] Running 9/9
 ⠿ Container harbor-jobservice  Stopped                                                 0.3s
 ⠿ Container nginx              Stopped                                                 0.4s
 ⠿ Container registryctl        Stopped                                                10.2s
 ⠿ Container harbor-portal      Stopped                                                 0.2s
 ⠿ Container harbor-core        Stopped                                                 0.3s
 ⠿ Container harbor-db          Stopped                                                 0.3s
 ⠿ Container redis              Stopped                                                 0.3s
 ⠿ Container registry           Stopped                                                 0.3s
 ⠿ Container harbor-log         Stopped                                                10.2s
[root@harbor harbor]# docker-compose start
[+] Running 9/9
 ⠿ Container harbor-log         Started                                                 0.7s
 ⠿ Container harbor-db          Started                                                 1.3s
 ⠿ Container redis              Started                                                 1.0s
 ⠿ Container registry           Started                                                 0.9s
 ⠿ Container registryctl        Started                                                 1.2s
 ⠿ Container harbor-portal      Started                                                 1.0s
 ⠿ Container harbor-core        Started                                                 0.6s
 ⠿ Container nginx              Started                                                 1.1s
 ⠿ Container harbor-jobservice  Started                                                 0.9s
[root@harbor ~]# vim harbor.sh   //設置腳本使其開機自啟
[root@harbor ~]# cat harbor.sh 
#!/bin/bash

/usr/local/harbor && docker-compose start
[root@harbor ~]# chmod +x harbor.sh  //給腳本賦予執行許可權
[root@harbor ~]# ll
total 8
-rw-------. 1 root root 1081 Jul 19 16:17 anaconda-ks.cfg
-rwxr-xr-x  1 root root   55 Aug 12 12:15 harbor.sh
[root@harbor ~]# reboot  //重啟虛擬機
[root@harbor ~]# docker ps   //查看狀態
CONTAINER ID   IMAGE                                COMMAND                  CREATED        STATUS                             PORTS                                   NAMES
27d358705acf   goharbor/harbor-jobservice:v2.5.3    "/harbor/entrypoint.…"   14 hours ago   Up 11 seconds (health: starting)                                           harbor-jobservice
917a7155677e   goharbor/nginx-photon:v2.5.3         "nginx -g 'daemon of…"   14 hours ago   Up 11 seconds (health: starting)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
6230fed03071   goharbor/harbor-core:v2.5.3          "/harbor/entrypoint.…"   14 hours ago   Up 11 seconds (health: starting)                                           harbor-core
290772e4a195   goharbor/harbor-registryctl:v2.5.3   "/home/harbor/start.…"   14 hours ago   Up 11 seconds (health: starting)                                           registryctl
a78c22de9b73   goharbor/redis-photon:v2.5.3         "redis-server /etc/r…"   14 hours ago   Up 11 seconds (health: starting)                                           redis
ef4560266151   goharbor/registry-photon:v2.5.3      "/home/harbor/entryp…"   14 hours ago   Up 11 seconds (health: starting)                                           registry
282d2180241e   goharbor/harbor-db:v2.5.3            "/docker-entrypoint.…"   14 hours ago   Up 12 seconds (health: starting)                                           harbor-db
383c26c94150   goharbor/harbor-portal:v2.5.3        "nginx -g 'daemon of…"   14 hours ago   Up 11 seconds (health: starting)                                           harbor-portal
7fcbe6d544c9   goharbor/harbor-log:v2.5.3           "/bin/sh -c /usr/loc…"   14 hours ago   Up 12 seconds (health: starting)   127.0.0.1:1514->10514/tcp               harbor-log
//成功實現開機自啟

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

-Advertisement-
Play Games
更多相關文章
  • 一:背景 準備開個系列來聊一下 PerfView 這款工具,熟悉我的朋友都知道我喜歡用 WinDbg,這東西雖然很牛,但也不是萬能的,也有一些場景他解決不了或者很難解決,這時候藉助一些其他的工具來輔助,是一個很不錯的主意。 很多朋友喜歡在項目中以記錄日誌的方式來監控項目的流轉情況,其實 CoreCL ...
  • static在java中可以修飾對象屬性,而由其修飾的屬性可以有以下的性質: 1.屬性的創建時間會由在對象創建後創建變為在相關類載入時創建,即在寫入屬性時就已經創建。 那麼就可以直接使用類名加屬性名進行調用(由右圖可知,可以正常使用且輸出)而不需要引入,但引入也是可以使用的,因為本質上依然是屬性; ...
  • 一、什麼是Dump文件 Dump文件又叫記憶體轉儲文件或者叫記憶體快照文件,是進程的記憶體鏡像。在進程崩潰時或進程有其他問題時,甚至是任何時候,我們都可以通過工具抓取系統或某進程的dump供調試分析用。dump文件中包含了程式運行的模塊信息、線程信息、堆棧調用信息、異常信息等數據。當我們的應用程式發佈出去 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1170雙核下不同GPIO組的訪問以及中斷設計。 在雙核 i.MXRT1170 下設計應用程式,有一個比較重要的考慮點是片內外設資源共用以及任務分配問題,同樣一個任務既可以放在預設主核 CM7 下做,也可以放在預設從核 CM ...
  • Dynamic Wallpaper for Mac是一款功能強大的動態壁紙應用。動態壁紙應用 Mac版為你提供200+精美視頻素材,卡通動漫、自然人文、萌寵萌物、游戲世界、創意視頻、古風古色等等。【抖音超火,Musedash瑪莉嘉、Zero Two、漫威、鬼刀等壁紙】 詳情:Dynamic Wall ...
  • Parallels Desktop 18可以在 Intel 或 Apple M 系列 Mac 電腦上下載並安裝 Windows 操作系統。在 Mac 與 Windows 之間無縫複製和粘貼文本或拖放對象。在 Mac 虛擬機中跨多個操作系統開發和測試。毫不費力地運行 Windows 應用程式,不會減 ...
  • 1、問題 測試伺服器java環境變數老是失效(非常氣人,測試同事老是說系統壞了,我感覺在懷疑我的技術) 我以前的配置是打開 /etc/profile 文件,在後面加上環境變數 整體環境是在宿主機上部署了一套docker,使用docker進行java環境變數配置,然後使用jar包文件進行java功能實 ...
  • 0. 題外話 最近好多文章被一些網站盜取, 比如這篇文章剛發佈就被爬走: https://www.icode9.com/content-3-1432259.html, 在這個網站一搜索, 好家伙, 好幾篇都被盜了, 比如: https://www.icode9.com/content-4-14228 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...