Docker倉庫之Harbor企業級映象倉庫的搭建與使用

谢友海發表於2024-11-10

本章將和大家分享Docker倉庫之Harbor企業級映象倉庫的搭建與使用。廢話不多說,下面我們直接進入主題。

一、企業最愛:Harbor企業級映象倉庫

Harbor是VMware公司開源的一個企業級Docker Registry專案,專案地址:https://github.com/goharbor/harbor

Harbor是一個開源的企業級Docker Registry服務,它提供了一個安全、可信賴的倉庫來儲存和管理Docker映象。

雖然Harbor和Registry都是私有映象倉庫的選擇,但是Harbor的企業級特性更強,因此也是更多企業級使用者的選擇。

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

二、一些準備工作

1、安裝docker

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

[root@localhost ~]# docker -v
Docker version 26.1.4, build 5650f9b

之前的博文我們已經講解過Docker的安裝,此處已經安裝過就不再安裝了。

2、安裝docker-compose

此處我採用的是離線安裝方式。

首先下載 docker-compose 到本地,下載地址:https://github.com/docker/compose/

下載連結:https://github.com/docker/compose/releases/download/v2.30.1/docker-compose-linux-x86_64

如果直接點選下載比較慢的話,建議複製連結地址到迅雷下載,這樣可能會快一些。下載完成後,把它上傳到 Linux 伺服器,如下所示:

接著把可執行檔案移到 Linux 系統命令目錄(/usr/local/bin/)下,並重新命名為 “docker-compose” :

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

授權:

chmod +x /usr/local/bin/docker-compose

驗證是否安裝成功:

docker-compose --version

如果能正常顯示出正確的版本號,說明安裝成功了。

如果需要解除安裝,直接刪除即可:

sudo rm /usr/local/bin/docker-compose

三、Harbor安裝與配置

1、下載 Harbor 離線安裝包

透過 GitHub下載離線安裝包,下載地址:https://github.com/goharbor/harbor

下載連結:https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz

如果直接點選下載比較慢的話,建議複製連結地址到迅雷下載,這樣可能會快一些。

2、把安裝包上傳到 Linux 伺服器

下載完成後,把離線安裝包上傳到 Linux 伺服器,如下所示:

3、將安裝包解壓出來

tar -zxvf harbor-offline-installer-v2.11.1.tgz

4、修改 harbor.yml 配置檔案

進入解壓後的資料夾,複製 harbor.yml.tmpl 檔案,並重新命名為 harbor.yml ,如下所示:

# 複製並重新命名
cp harbor.yml.tmpl harbor.yml

# 修改配置檔案
vim harbor.yml

修改配置檔案,需要設定hostname、埠、admin使用者的初始登入密碼等,標紅色的表示修改的部分:

# 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.
# 修改主機名,如果沒有域名就使用本機IP地址
hostname: 192.168.4.250

# 配置啟動埠號,預設是80埠,此處我把它改成 5001
# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 5001

# 如果沒有申請證書,需要把 https 這塊相關的全部給它註釋掉
# 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

# 啟動成功後,admin使用者的初始登入密碼
harbor_admin_password: admin123456

5、修改 docker 守護程序配置檔案

vim /etc/docker/daemon.json

加上下面這一句,讓 Docker 認為該地址是安全的,這裡的 “your-server-ip” 請替換為你的伺服器外網IP地址,“port” 替換為你的埠:

{
    "insecure-registries": [
        "your-server-ip:port"
    ]
}

“insecure-registries”:不安全的登錄檔,用來配置 Docker 可以透過 HTTP 而非 HTTPS 連線的不安全映象倉庫地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉庫。

示例:

儲存成功後,重新載入配置並重啟Docker服務:

sudo systemctl daemon-reload
sudo systemctl restart docker

6、啟動安裝 Harbor

配置檔案修改成功後,執行 install.sh 指令碼進行安裝 Harbor

./install.sh

提示安裝成功,接下來就可以訪問 Harbor 了。透過 IP+埠 訪問:http://192.168.4.250:5001

訪問成功,由於 Harbor 是透過 Docker 管理的,所以啟動非常方便。如果首頁訪問成功說明 Docker 私有倉庫已經部署成功了。

四、Harbor Web頁面操作說明

預設使用者名稱是admin,密碼是啟動時設定的密碼:admin123456

登入成功進入主頁面,從系統首頁可以看到系統分為三個選單:專案、日誌、系統管理。

1、專案

專案管理顧名思義就是用來管理專案的。可以為每一個開發專案建立一個私有專案庫,然後把 Docker 映象儲存到指定的專案中,為每個專案實現專案映象隔離。建立專案的時候,Harbor提供了公開庫(public repository)和私有庫(private repository)兩種型別的映象儲存空間。

透過詳情資訊可以看到:公開庫中的映象是對所有使用者可見和可訪問的,任何人都可以檢視和拉取其中的映象。而私有庫中的映象則需要登入才能訪問控制,只有被授權的使用者或團隊才能夠檢視、拉取和推送映象。 可以根據需要建立相關的專案。

專案建立成功後,可以點選進入專案。在裡面可以為每個專案單獨設定不同的配置資訊。可以為每一個專案新增成員資訊。

角色許可權說明:

  • 專案管理員(Project Administrator):擁有專案的最高許可權,可以對專案進行全面管理,包括建立和刪除專案、管理專案成員和許可權、配置專案屬性、檢視專案日誌等。
  • 維護人員(Maintainer):類似於專案管理員,但許可權稍低,通常用於協助管理專案,可以進行專案的部分管理操作,如新增和刪除映象、配置映象的複製和同步規則等。
  • 開發者(Developer):具有對專案中映象倉庫的讀寫許可權,可以拉取、推送和刪除映象,以及管理部分專案配置,但不能進行專案管理操作。
  • 訪客(Guest):只具有對專案中映象倉庫的只讀許可權,可以檢視映象和後設資料,但無法對映象進行修改或刪除操作。通常用於分享專案或映象給外部團隊或使用者。
  • 受限訪客(Restricted Guest):是一種更加受限的訪客角色,通常用於提供給外部使用者或系統,具有對專案中映象倉庫的只讀許可權,但可能會限制訪問的部分內容或功能。

在右上角顯示推送命令,可以透過提示命令進行 docker 映象推送。

2、日誌

日誌選單就是記錄使用者操作日誌資訊的。

3、系統管理

系統管理主要用來管理 Harbor 使用者人員資訊、映象倉庫的各種配置、許可權和系統設定。

五、Docker命令使用私有倉庫

1、登入

登入私有倉庫:

docker login  -u admin -p admin123456 http://192.168.4.250:5001

透過輸出可以發現登入成功了。認證資訊儲存在 ~/.docker/config.json 檔案中,只要登入資訊存在,登入會一直生效不需要每次推送拉取之前都登入。

注意:如果未修改 docker 守護程序配置檔案,那麼登入時可能會報以下錯誤。

[root@localhost ~]# docker login  -u admin -p admin123456 http://192.168.4.250:5001
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.4.250:5001/v2/": http: server gave HTTP response to HTTPS client

這是由於,docker認為這個地址是不安全的,所以需要在docker守護程序配置檔案中把該地址配置為可信任地址。

vim /etc/docker/daemon.json

加上下面這一句,讓 Docker 認為該地址是安全的,這裡的 “your-server-ip” 請替換為你的伺服器外網IP地址,“port” 替換為你的埠:

{
    "insecure-registries": [
        "your-server-ip:port"
    ]
}

“insecure-registries”:不安全的登錄檔,用來配置 Docker 可以透過 HTTP 而非 HTTPS 連線的不安全映象倉庫地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉庫。

示例:

儲存成功後,重新載入配置並重啟Docker服務:

sudo systemctl daemon-reload
sudo systemctl restart docker

配置成功後,再次嘗試登入,這時候應該就可以登入成功了。

2、推送映象

在專案中標記映象:

docker tag SOURCE_IMAGE[:TAG] 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]

示例:

docker tag nginx:latest 192.168.4.250:5001/blog_project/nginx:v1

推送映象到指定專案:

docker push 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]

示例:

docker push 192.168.4.250:5001/blog_project/nginx:v1

檢視 Harbor 倉庫,推送成功。

3、拉取映象

透過另一臺伺服器,使用 docker pull 從私有倉庫拉取映象:

docker pull 192.168.4.250:5001/blog_project/nginx:v1

拉取成功,檢視下載數,發現已經更新了:

4、退出登入

docker logout 192.168.4.250:5001

六、其他補充

首先我們需要先進入解壓後的 harbor 資料夾:

cd ./Software/
cd ./harbor/

1、檢視 Harbor 容器例項群

可以透過 docker-compose ps 命令檢視啟動起來的 Harbor 例項群:

docker-compose ps

可以看到,整個 harbor 容器例項群包括了管理服務、資料庫服務、Job服務、日誌服務以及 portal 網頁入口(預設是80埠)服務等。

2、重新初始化 Harbor

如果想要繼續更改 Harbor 配置,那麼改完後需要重新初始化 Harbor:

# 停止並移除 Harbor 例項群
docker-compose down -v

# 生成配置檔案,根據 harbor.cfg 配置生成 docker-compose 檔案。
./prepare

# 後臺啟動 Harbor 例項群
docker-compose up -d

2.1、docker-compose down -v 命令

功能:

  • docker-compose down -v 命令用於停止並移除使用 docker-compose.yml 檔案定義的所有容器、網路、卷(透過 -v 引數指定的資料卷)以及預設的網路橋接。
  • 使用 -v 引數會刪除所有命名的資料卷。這可能會導致資料丟失,因此在執行前請確保已經做好了必要的備份。

使用場景:

  • 適用於徹底清理環境,例如在開發過程中需要重置環境或者測試不同配置時。
  • 完全重置環境:當你需要完全重置開發環境,確保沒有任何遺留資料時,可以使用 docker-compose down -v。
  • 測試環境清理:在自動化測試中,每次測試結束後使用 docker-compose down -v 可以確保環境乾淨,不受上次測試的影響。
  • 部署前清理:在部署新版本應用之前,使用 docker-compose down -v 可以確保沒有舊版本的殘留資料。

2.2、docker-compose up -d 命令

功能:

  • 建立並啟動服務(容器):如果服務尚未建立,docker-compose up -d 會根據 docker-compose.yml 檔案中的定義建立並啟動這些服務。
  • 後臺執行:-d 參數列示“detached”模式,即以分離模式執行,服務會在後臺執行,不會佔用當前終端。
  • 重新建立容器:如果服務已經存在且正在執行,docker-compose up -d 會先停止並刪除現有的容器,然後重新建立並啟動新的容器。
  • 構建映象:如果配置檔案中指定了 build 指令,docker-compose up -d 會先構建所需的 Docker 映象。
  • 檢查配置:在啟動服務之前,docker-compose up -d 會檢查並驗證 docker-compose.yml 檔案中的配置。

使用場景:

  • 首次部署:當你第一次部署服務時,使用 docker-compose up -d 可以確保所有服務都按最新配置建立並啟動。
  • 更新服務:當你修改了 docker-compose.yml 檔案中的配置或映象,使用 docker-compose up -d 可以確保這些更改生效。
  • 確保最新狀態:無論服務是否已經存在,docker-compose up -d 都會確保服務是最新的狀態。

3、暫停和重啟 Harbor

想要暫停和重啟 Harbor:

# 暫停 Harbor
# docker-compose stop 命令用於停止透過 docker-compose.yml 檔案定義並啟動的所有容器。這個命令不會移除容器、網路或卷,它只是停止了容器的執行。
docker-compose stop

# 啟動 Harbor
# docker-compose start 命令用於啟動之前已經建立但已停止的容器。
docker-compose start

4、徹底刪除 Harbor 資料和映象檔案

不用 Harbor 了,那麼可以徹底刪除 Harbor 的資料和映象檔案:

# 徹底地刪除 Harbor 的資料和映象
rm -r /data/database
rm -r /data/registry

本文部分內容參考博文:https://www.cnblogs.com/sowler/p/18242819

至此本文就全部介紹完了,如果覺得對您有所啟發請記得點個贊哦!!!

Demo中的軟體安裝包:

連結:https://pan.baidu.com/s/1vJouBntYhV4IwUUQM3iqTg 
提取碼:tf92

此文由博主精心撰寫轉載請保留此原文連結:https://www.cnblogs.com/xyh9039/p/18523973

版權宣告:如有雷同純屬巧合,如有侵權請及時聯絡本人修改,謝謝!!!

相關文章