前言

Harbor Proxy Cahe 功能可以讓使用者向公開或私有 Image Registry 取得 Image 並進行緩存,避免大量向公開儲存庫拉取 Image 造成頻寬消耗而被限制速率,也避免造成目標儲存庫效能問題,可以作為 Tool Chain 架構設計一種使用方式。

從 Harbor v2.1.1 開始 Proxy Cahe 功能已經與 Docker Hub 的速率限制策略保持一致




一般來說,個人或較小規模的開發團隊比較不容易遇到 Image Registry 效能問題,但在開發過程中可能經常遇到既有 image 突然異常狀況。若能在建構 CI Tool Chain 時期做好規劃,會讓後續的開發維運工作更加順利。以下比較常見的使用案例:

1. 避免對於公開儲存庫大量存取而被限速,或公開儲存庫 image 無故刪除導致開發/維運工作停擺,在開發環境架設一個暫存區

2. 避免大量佈署導致主要儲存庫效能低落,對於每一座 K8S 設定暫存區



目前 Proxy Cache 支援以下 Image Registry:

  1. Harbor
  2. Docker Hub
  3. Docker registry
  4. AWS Elastic Container Registry
  5. Azure Container Registry
  6. Google Container Registry
  7. Quay
  8. Github Container Registry
  9. JFrog Artifactory Registry




建立 Proxy Cache 專案 (Proxy Cache Project)

Harbor 內 Proxy Cache 是透過專案方式進行,在建立新專案時選擇 Proxy Mode,即完成設定。需注意一但專案設定為 Proxy Mode,即不能切換回原有模式。Proxy Mode 主要差異在於使用者無法 Push Image 至此 Project,而必須透過 Pull Image 方式,從不同座 Image Registry Pull Image 到此專案內,其他功能則與一般 Project 相同。




注意:在設定代理快取之前需先設定端點,你可以在左邊選單找到 Registry 管理,點選新增按鈕新增另一座儲存庫資訊。




選擇你的 Image Registry 提供者、輸入名稱、URL與基本驗證資訊。建立完成後,後續即可在 Replication 功能中使用




如何透過 Proxy Cache Project 拉取 Image

預設情況下,Harbor 為每個新的代理快取項目建立 7 天的保留策略。若要開始使用代理程式緩存,請使用 docker pull 指令或設定 pod 清單,以特別的前綴名稱 <harbor_servername>/<proxy_project_name>來下載所需要的 image。指令完整格式如下


docker pull <harbor_server_名稱>/<proxy_project_名稱>/<Image 名稱>:<Tag 名稱>


如果原本從自己的 Azure Cotainer Registry 下載 redis:lastest,透過 Proxy Cache 設定,你只需更改 docker pull 指令為 docker pull myharbor.com/proxydemo/redis:latest,即可將 ACR 上的 image pull 至 harbor 內proxydemo 專案內進行緩存,同時拉取至本地端。後續若需要 pull image,即不需要每次從 Azure Cotainer Registry 上 pull image,從 Harbor Proxy Project 進行拉取即可。