Harbor v2.13.0 詳細安裝步驟(啟用 HTTPS)
1. 環境準備
-
系統要求:至少 4GB 內存,100GB 磁盤空間。
-
已安裝組件:
- Docker(版本 ≥ 20.10)
- Docker Compose(版本 ≥ v2.0)
-
域名映射:
echo "192.168.0.223 harbor.host3" | sudo tee -a /etc/hosts
2. 下載并解壓 Harbor 離線安裝包
github下載地址: Release v2.13.0
# 解壓到指定目錄(如 /opt/harbor)
sudo tar -xzvf harbor-offline-installer-v2.13.0_6.tgz -C /opt
cd /opt/harbor
3. 生成 SSL 證書(自簽名)
步驟 1:創建證書目錄
sudo mkdir -p /opt/harbor/certs
cd /opt/harbor/certs
步驟 2:生成 CA 根證書
# 生成 CA 私鑰
openssl genrsa -out ca.key 4096# 生成 CA 證書(有效期 10 年)
openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.host3" \-key ca.key \-out ca.crt
步驟 3:生成服務器證書
# 生成服務器私鑰
openssl genrsa -out harbor.host3.key 4096# 生成證書簽名請求(CSR)
openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.host3" \-key harbor.host3.key \-out harbor.host3.csr# 生成證書擴展文件(v3.ext)
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage=serverAuth
subjectAltName=@alt_names[alt_names]
DNS.1=harbor.host3
EOF# 使用 CA 簽發服務器證書
openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in harbor.host3.csr \-out harbor.host3.crt
步驟 4:配置證書權限
sudo chmod 644 /opt/harbor/certs/*
4. 配置 Harbor
編輯 harbor.yml
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
# 關鍵配置項:
hostname: harbor.host3 # 域名
http:#port: 80 # 禁用 HTTP(設為空或注釋)
https:port: 443certificate: /opt/harbor/certs/harbor.host3.crtprivate_key: /opt/harbor/certs/harbor.host3.keyharbor_admin_password: Harbor12345 # 管理員密碼
database:password: root123 # 數據庫密碼
data_volume: /data/harbor # 數據存儲路徑
5. 安裝 Harbor
注意檢查端口是否占用
# 查看 80 端口占用情況
sudo lsof -i :443
# 或使用 netstat 命令
netstat -tuln | grep 443
# 運行安裝腳本(自動啟動服務)
sudo ./install.sh --with-trivy
6. 驗證安裝
檢查服務狀態
docker compose ps
# 預期輸出所有服務狀態為 "running"
訪問 Harbor Web 界面
- 瀏覽器訪問:
https://harbor.host3
- 用戶名:
admin
- 密碼:
Harbor12345
解決瀏覽器證書警告
# 將 CA 證書導入系統信任庫(以 Ubuntu 為例)
sudo cp /opt/harbor/certs/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
7. 防火墻配置(如需)
# 開放 443 端口
sudo ufw allow 443/tcp
sudo ufw reload
常見問題解決
1. 常見問題
-
** 證書不信任錯誤**
-
現象:
x509: certificate signed by unknown authority
-
解決:確保客戶端已正確導入 Harbor 的
ca.crt
。 -
#Windows 系統 1.從 Harbor 服務器獲取 /opt/harbor/certs/ca.crt 文件,發送到 Windows 客戶端 2.打開證書管理器 win+R certmgr.msc 3.導航至 ?受信任的根證書頒發機構 → 證書?,右鍵選擇 ?所有任務 → 導入?,選擇 ca.crt 文件完成導入 #Ubuntu/Debian# 1復制證書到系統目錄sudo cp ca.crt /usr/local/share/ca-certificates/harbor-ca.crt # 2更新證書庫sudo update-ca-certificates # 3重啟 Docker(若需通過 Docker 訪問 Harbor)sudo systemctl restart docker #CentOS/RedHat# 1復制證書到系統目錄sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ # 2更新證書庫sudo update-ca-trust # 3重啟 Dockersudo systemctl restart docker #macOS 系統導入 CA 證書 #?1鑰匙串訪問工具?#雙擊 ca.crt 文件,選擇 ?系統? 鑰匙串,點擊 ?添加?。#右鍵證書 → ?顯示簡介 → 信任?,設置為 ?始終信任?。 #?2終端驗證?# 檢查證書是否生效openssl s_client -connect harbor.host3:443 -showcerts
-
-
DNS 解析失敗
-
現象:
Could not resolve host: harbor.host3
-
解決:檢查客戶端主機的
/etc/hosts
或 DNS 服務器配置。 -
echo "192.168.0.223 harbor.host3" | sudo tee -a /etc/hosts
-
-
IP 訪問證書警告
-
現象:訪問
https://192.168.0.223
提示證書無效。 -
解決:證書必須包含 IP SAN(即
alt_names
中添加IP.1 = 192.168.0.223
)。 -
現象:瀏覽器提示 “不安全連接”。
-
解決:將
ca.crt
導入瀏覽器或系統信任庫。
-
2. Harbor 服務未啟動
-
檢查日志:
tail -f /var/log/harbor/*.log
-
重新部署:
docker compose down -v sudo ./install.sh
3. Docker 客戶端信任自簽名證書
# 在 Docker 客戶端機器操作
sudo mkdir -p /etc/docker/certs.d/harbor.host3
sudo scp root@harbor.host3:/opt/harbor/certs/ca.crt /etc/docker/certs.d/harbor.host3/
sudo systemctl restart docker
# 在 Harbor 服務器檢查防火墻規則
sudo ufw allow 443/tcp
sudo ufw reload
4.Docker 客戶端推送鏡像
# 登錄 Harbor
docker login harbor.host3 -u admin -p Harbor12345# 推送測試鏡像
docker pull nginx:latest
docker tag nginx:latest harbor.host3/library/nginx:latest
docker push harbor.host3/library/nginx:latest
Harbor 核心功能與使用指南
一、Harbor 與傳統 Docker Registry 的核心優勢
- 企業級功能支持
- 基于角色的訪問控制(RBAC):支持項目級別的權限管理(如管理員、開發者、訪客角色),可精細控制用戶對鏡像的讀寫權限。
- 鏡像復制與同步:支持跨 Harbor 實例的鏡像自動同步,適用于混合云或多數據中心場景。
- 漏洞掃描與安全審計:集成 Trivy 等工具自動掃描鏡像漏洞,并記錄所有操作日志用于審計。
- LDAP/AD 集成:可直接對接企業已有的 LDAP/AD 系統,統一用戶認證。
- 易用性與擴展性
- 圖形化界面(Web UI):提供直觀的鏡像管理、項目配置和用戶權限設置界面。
- RESTful API:支持自動化集成到 CI/CD 流程中,例如通過 API 創建項目或管理鏡像。
- 多存儲后端支持:支持本地存儲、S3、Ceph 等存儲方案,適應不同規模的部署需求。
- 與 Kubernetes 生態的深度集成
Harbor 可無縫對接 Kubernetes,作為私有鏡像倉庫,支持 Helm Chart 存儲(需啟用 ChartMuseum)。
二、Harbor 的核心使用場景
- 企業內部鏡像管理
- 統一存儲企業內部開發的 Docker 鏡像,避免依賴公共倉庫。
- 通過項目隔離不同團隊的鏡像資源,例如
project-frontend
和project-backend
。
- 混合云鏡像分發
- 在多個 Harbor 實例間配置鏡像復制策略,實現跨云或跨地域的鏡像同步。
- 安全合規與審計
- 掃描生產環境鏡像的漏洞,記錄操作日志以滿足合規要求。
三、Harbor 鏡像推送與拉取操作
1. 推送鏡像到 Harbor
-
步驟 1:登錄 Harbor
docker login harbor.host3 -u admin -p Harbor12345
注意:若使用自簽名證書,需將 CA 證書放入
/etc/docker/certs.d/harbor.host3
。 -
步驟 2:打標簽
鏡像名稱需包含 Harbor 地址和項目名稱:docker tag nginx:latest harbor.host3/myproject/nginx:v1
-
步驟 3:推送鏡像
docker push harbor.host3/myproject/nginx:v1
2. 從 Harbor 拉取鏡像
docker pull harbor.host3/myproject/nginx:v1
3. 鏡像管理
-
Web UI 操作:通過瀏覽器訪問
https://harbor.host3
,可在項目中查看、刪除鏡像或配置復制策略。 -
API 操作:使用 RESTful API 自動化管理,例如列出所有鏡像:
curl -X GET "https://harbor.host3/api/v2.0/projects/myproject/repositories" -H "Authorization: Bearer <TOKEN>"
四、Harbor 與其他工具對比
工具 | 優勢 | 局限性 |
---|---|---|
Docker Hub | 公共鏡像豐富,適合個人開發者 | 缺乏企業級功能,安全性低 |
Nexus 3 | 支持多種倉庫類型(Maven、Docker) | Docker 管理功能較 Harbor 弱 |
Harbor | 企業級安全、鏡像復制、漏洞掃描 | 部署復雜度較高 |
五、Harbor 維護與管理
- 日志與監控
- 日志收集:Harbor 日志默認存儲在
/var/log/harbor
,可通過 ELK 或 Prometheus 集成實現集中監控。 - 服務狀態檢查:使用
docker-compose ps
查看容器運行狀態。
- 日志收集:Harbor 日志默認存儲在
- 備份與恢復
- 數據備份:定期備份 Harbor 數據庫 (
harbor-db
) 和存儲卷 (/data/harbor
)。 - 配置文件備份:保存
harbor.yml
和證書文件,便于快速恢復。
- 數據備份:定期備份 Harbor 數據庫 (
- 升級與擴展
- 版本升級:下載新版本安裝包,運行
./prepare
和./install.sh
,注意遷移舊數據。 - 高可用部署:通過 Redis 集群和 Ceph 存儲實現 Harbor 組件的高可用。
- 版本升級:下載新版本安裝包,運行
- 安全維護
- 定期更新證書:自簽名證書需每年更新,避免服務中斷。
- 漏洞掃描策略:配置定時掃描任務,攔截高風險鏡像。
六、常見問題解決
- 拉取鏡像超時
- 檢查網絡:確保防火墻開放 443 端口(HTTPS)或 80 端口(HTTP)。
- Web UI 無法訪問
- 服務狀態:運行
docker-compose logs
查看 Nginx 或 Core 服務日志。
- 服務狀態:運行
七、總結
Harbor 是企業級容器鏡像管理的首選工具,其核心價值在于 安全性、可擴展性 和 易用性。通過合理配置鏡像推送、權限管理和存儲后端,可大幅提升 DevOps 流程的效率。維護時需重點關注日志監控、備份策略和高可用部署,確保服務穩定