快速搭建一套企業級 Harbor 鏡像倉庫
一、什么是Harbor
Harbor是一個開源可信的企業級鏡像倉庫,主要用于存儲和管理Docker鏡像。
Harbor還提供了更高級的安全特性,如用戶管理、訪問控制和活動審計,目前大多數企業都在使用Harbor進行鏡像管理。
我們本次基于目前Harbor的v2.11.1版本進行安裝部署。

二、安裝Harbor
Harbor 的安裝是基于 docker-compose ,通過構建多個容器來組成一個服務。需要先安裝Docker和docker-compose
1. 下載相關安裝包
Harbor下載地址:https://github.com/goharbor/harbor/releases
docker-compose下載地址:https://github.com/docker/compose/releases/
兩種下載方式 :
方式一:有網環境,直接wget下載
# 下載harbor
wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
# 下載docker-compose
wget https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64方式二:先在有網環境下載安裝包,再上傳到無網環境的服務器
2. 安裝Docker
3. 安裝Docker-compose
# 下載
wget https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64
# 將執行文件復制到環境變量
cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 創建軟鏈接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 授予權限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
[root@localhost ~]# docker-compose version
Docker Compose version v2.29.74. 安裝harbor
# 下載軟件包
cd /data && wget https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64
# 解壓
tar -xvf harbor-offline-installer-v2.11.1.tgz
# 修改配置文件
[root@localhost data]# cd harbor/
[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# vi harbor.yml
# 需要修改的配置
hostname: 10.10.10.200 #IP地址或域名
http:
port: 80 # 監聽端口,此處端口可修改
# https: # 未配置證書,將其注釋
# port: 443
# certificate: xxx
# private_key: xxx
harbor_admin_password: Harbor12345 # Web端admin用戶密碼
database:
password: root123 # 后端數據庫root密碼
data_volumn: /data # 數據存放路徑
看到上面的信息就說明Harbor已經安裝完成。
下面是Harbor各個組件的作用:
(1)nginx-photon:反向代理服務,用于將客戶端請求轉發到相應的后端服務,同時提供SSL加密和負載均衡等功能。
(2)harbor-jobservice:異步任務服務,負責處理耗時較長的任務,如鏡像掃描、垃圾回收等。
(3) harbor-core:核心組件,負責處理Harbor的核心業務邏輯,包括用戶認證、權限控制、鏡像復制等。
(4)redis-photon:緩存服務,用于存儲Harbor的緩存數據,提高系統性能。
(5)harbor-db:數據庫組件,使用PostgreSQL作為后端存儲,用于存儲Harbor的元數據信息,如用戶信息、鏡像信息等。
(6)harbor-portal:前端門戶組件,使用Nginx作為Web服務器,提供用戶界面,讓用戶可以通過Web界面訪問Harbor。
(7)harbor-registryctl:注冊表控制器組件,負責監控和管理Harbor的各個組件。
(8)registry-photon:鏡像倉庫組件,負責存儲和管理Docker鏡像。
(9)harbor-log:日志組件,負責收集和存儲Harbor的日志信息。訪問:在瀏覽器上輸入服務器IP地址即可訪問Harbor

【溫馨提示】實際的企業生產環境一般不會直接通過http協議和IP方式訪問。會有固定的域名和配置https進行訪問。
下面演示如何配置HTTPS訪問,企業生產環境一般都會擁有自己的域名和廠商頒發證書。但我演示的是自己創建的SSL證書。
5. 配置HTTPS
(1)創建證書
# 創建存放證書的目錄
mkdir -p /data/cert/
# 創建自簽名證書
openssl genrsa -out harbor.liyb.com.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=matrix/OU=test/CN=harbor.liyb.com" -key harbor.liyb.com.key -out harbor.liyb.com.crt(2)修改harbor配置
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/harbor.liyb.com.crt
private_key: /data/cert/harbor.liyb.com.key
# enable strong ssl ciphers (default: false)(3)重啟Harbor
# 停止Harbor
cd /data/harbor
docker-compose down -v
# 生成配置文件,根據 harbor.yml 配置生成docker-compose文件。
./prepare
# 后臺啟動harbor
docker-compose up -d(4)配置Docker客戶端
mkdir -p /etc/docker/certs.d/
cp /data/cert/harbor.liyb.com.crt /etc/docker/certs.d/harbor.liyb.com/修改docker的daemon.json文件
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["10.10.10.200", "harbor.liyb.com"]
}重啟Docker
systemctl restart docker(5)Docker登錄harbor
[root@localhost ~]# docker login -u admin harbor.liyb.com
Password: # 輸入harbor的密碼
可以看到Docker已經順利登錄Harbor倉庫,可以通過push和pull進行推送和拉取鏡像了。
三、使用Harbor
1. Web頁面登錄Harbor
打開瀏覽器,訪問 https://harbor.liyb.com,或https://ip,使用配置文件中設置的管理員用戶名(默認是 admin)和密碼登錄。
IP地址訪問:

域名訪問harbor:

注意:如果是自簽證書的話,你需要在window主機的hosts文件添加IP和域名的映射。
2. harbor界面管理

上圖就是登錄后的界面,有很多的功能,可以自行去研究一下。
經常使用的功能有:
(1) 倉庫管理
- 鏡像瀏覽與搜索:用戶可以在Web界面中查看已創建的鏡像倉庫列表,通過點擊任何一個倉庫進入其詳細信息頁面,包括鏡像列表、標簽和訪問權限等。同時,支持通過關鍵字搜索倉庫中的鏡像,以便快速找到所需的鏡像。
- 鏡像刪除與上傳:對于不再需要的鏡像,可以選擇刪除操作,但需確保了解刪除的后果。同時,支持將新的鏡像上傳到項目中,并為其添加標簽和描述。
(2) 用戶權限管理
- 用戶角色分配:用戶可以創建和管理用戶,并為用戶分配不同的角色和權限。Harbor提供了預定義的角色(如管理員、開發人員、訪客等),也支持自定義角色。
- 訪問權限控制:除了用戶管理外,還可以通過界面為用戶和項目分配不同的權限,包括鏡像的讀取、寫入和刪除等操作。
(3) 鏡像推送拉取
- 鏡像推送:首先需要準備一個Docker鏡像,并將其推送到Harbor。然后登錄到Harbor的私有倉庫,標記鏡像并將其推送到指定的項目。
- 鏡像拉取:可以從Harbor中拉取鏡像來部署應用程序。首先從Harbor中拉取鏡像,然后使用該鏡像來運行容器
3. 推送拉取鏡像實例

# Docker登錄Harbor
docker login -u admin harbor.liyb.com
# 鏡像打標簽
docker tag nginx:latest harbor.liyb.com/product/nginx:1.26 # tag 名稱= 倉庫地址/項目名稱/鏡像名稱:標記(版本號)
# 推送鏡像
docker push harbor.liyb.com/product/nginx:1.26
# 拉取鏡像
docker pull harbor.liyb.com/product/nginx:1.26四、管理Harbor
1. 啟動/停止Harbor
# 進入到harbor的安裝目錄才能啟動停止
cd /data/harbor
# 停止Harbor
docker-compose down -v
# 啟動harbor
docker-compose up -d2. 更改配置文件
修改配置harbor.yml后需要重新加載Harbor
docker-compose down -v
# 重新生成配置文件
./prepare
# 啟動Harbor
docker-compose up -d熟練上面對Harbor的部署和使用,你已經可以企業環境輕松管理Harbor了。



























