手把手教你搭建Docker私有倉庫Harbor

sowler發表於2024-06-12

1、什麼是Docker私有倉庫

Docker私有倉庫是用於儲存和管理Docker映象的私有儲存庫。Docker預設會有一個公共的倉庫Docker Hub,而與Docker Hub不同,私有倉庫是受限訪問的,只有授權使用者才能夠上傳、下載和管理其中的映象。這種私有倉庫可以部署在本地雲環境中,用於組織內部開發、測試和生產環境中的容器映象管理。保證資料安全性。

2、Docker有哪些私有倉庫

以下是一些常見的Docker私有倉庫:

  • Harbor:作為一個企業級的Docker Registry服務,Harbor提供了安全、可信賴的映象儲存和管理功能。它支援RBAC許可權控制、映象複製、映象簽名、漏洞掃描等功能。
  • Docker Trusted Registry (DTR):由Docker官方推出的企業級Docker私有倉庫服務,與Docker Engine緊密整合,支援高度的安全性和可靠性。
  • Portus:一個開源的Docker映象管理和認證服務,提供使用者管理、團隊管理、映象稽核等功能,與Docker Registry相容。
  • Nexus Repository Manager:雖然主要是用於構建和管理Java元件,但也可以用作Docker私有倉庫。它具有強大的儲存管理和許可權控制功能。
  • GitLab Container Registry:GitLab整合了容器登錄檔功能,允許您儲存、管理和分發Docker映象。這是GitLab自帶的功能,無需額外部署。
  • AWS Elastic Container Registry (ECR):如果使用AWS雲服務,可以考慮使用AWS ECR作為私有倉庫。它與AWS的其他服務整合緊密,對AWS使用者來說是一個方便的選擇。

本篇使用Harbor搭建Docker私有倉庫。

3、Harbor簡介

Harbor是一個開源的企業級Docker Registry服務,它提供了一個安全、可信賴的倉庫來儲存和管理Docker映象。Harbor翻譯為中文名稱為"庇護;居住;"。可以理解為是Docker映象的"居住環境"或者是映象的"庇護所"。Harbor最初由VMware公司開發,旨在解決企業級Docker映象管理的安全和可信任性問題。VMware於2016年釋出,在2017年,VMware將Harbor開源,這使得更廣泛的社群和組織可以自由地使用和貢獻程式碼。Harbor是一個成熟、功能豐富且安全可靠的企業級Docker Registry服務,為企業容器化應用的部署和管理提供了強大的支援。

Harbor官網地址:Harbor (goharbor.io)

Github開源地址:https://github.com/goharbor/harbor

4、Harbor下載

4.1、透過Linux命令下載
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
4.2、GitHub下載

下載地址:https://github.com/goharbor/harbor/releases 下載離線版本

下載成功後,把包透過 xftp 上傳到伺服器。

4.3、解壓

解壓檔案

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

5、啟動Harbor

5.1、修改配置檔案

複製harbor.yml.tmpl 檔案並重新命名為harbor.yml修改此配置檔案,需要設定hostname、埠、資料庫密碼等。

cp harbor.yml.tmpl harbor.yml #複製

vim harbor.yml

修改配置檔案:

#修改hostname的值,如果沒有域名就使用本機IP地址
hostname: 192.168.42.133

#配置啟動埠號
# http related config 
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 5000

# 如果沒有申請證書,需要隱藏https
#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使用者登入密碼
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: AdminHarbor12345

5.2、啟動

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

./install.sh 

啟動報錯:

[Step 0]: checking if docker is installed ...

Note: docker version: 26.1.3

[Step 1]: checking docker-compose is installed ...
/opt/harbor/common.sh: line 119: docker-compose: command not found
✖ Failed to parse docker-compose version.

可以看到,該伺服器安裝的 docker 沒有安裝 docker-compose 外掛

5.3、安裝docker-compose

進入docker-compose 官網下載執行檔案,地址: https://github.com/docker/compose 下載成功後,把可執行檔案加入Linux 系統命令目錄

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

重新命名:

mv docker-compose-linux-x86_64 docker-compose

授權:

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

執行命令檢視是否安裝成功:

docker-compose --version

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

rm -f /usr/bin/docker-compose
5.4、再次啟動

再次執行 ./install.sh

提示安裝成功。接下來就可以訪問Harbor了。訪問IP+埠:http://192.168.42.133:5000

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

6、Harbor Web頁面操作說明

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

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

6.1、專案

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

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

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

角色許可權說明:

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

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

6.2、日誌

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

6.3、系統管理

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

7、Docker命令使用私有倉庫

7.1、登入

首先登入私有倉庫地址:

docker login  -u admin -p AdminHarbor12345 http://192.168.42.133:5000

會報錯:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.42.133:5000/v2/": proxyconnect tcp: dial tcp 192.168.65.7:3128: connect: connection refused

docker認為這個地址是不安全的,所以需要在docker守護程序配置檔案中把該地址加入安全範圍。

{
  "registry-mirrors": ["https://ejes884z.mirror.aliyuncs.com"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"1g", "max-file":"3"},
  "live-restore": true,
  "insecure-registries": ["192.168.42.133:5000"]
}

# insecure-registries 不安全的登錄檔配置一些不安全的地址資訊,讓Docker認為是安全的。多個地址使用 "," 分割

加入配置成功後,再次登入。

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

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

7.2、推送

重新命名映象名稱

docker tag 94543a6c1aef 192.168.42.133:5000/blog_project/nginx:1.26.0

推送

docker push 192.168.42.133:5000/blog_project/nginx:1.26.0

檢視Harbor倉庫,推送成功。

7.3、拉取

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

docker pull 192.168.42.133:5000/blog_project/nginx:1.26.0

拉取成功

檢視下載數,發現已經更新了。

8、總結

關於使用Harbor搭建Docker私有倉庫就介紹完畢了,如果大家有興趣可以檢視一下其他搭建方式,然後在它們之間進行對比一下看看那種方式更適合。本篇為入門級Harbor的基礎使用,其他功能可以自行研究。

相關文章