在企業(yè)內(nèi)網(wǎng)環(huán)境中,開發(fā)者經(jīng)常需要使用外網(wǎng)公共鏡像資源。但由于網(wǎng)絡受限或者帶寬有限,直接拉取外網(wǎng)鏡像往往效率低下甚至無法訪問。為解決這一瓶頸,Harbor v2.1 引入了強大的「代理緩存」功能,幫助內(nèi)網(wǎng)Harbor倉庫智能代理并緩存外部鏡像,極大提升鏡像拉取效率,節(jié)省帶寬,規(guī)避 Docker Hub 訪問速率限制。
本文將詳細講解如何在內(nèi)網(wǎng)環(huán)境中配置并使用 Harbor 代理緩存功能,輕松實現(xiàn)外網(wǎng)鏡像資源的同步與加速。
什么是 Harbor 代理緩存?
Harbor 代理緩存(Proxy Cache)是一種中間鏡像倉庫,類似 Nexus 的代理模式,允許 Harbor 代理來自 Docker Hub 或其他私有倉庫的鏡像請求。它的工作原理是:
- 當內(nèi)網(wǎng)客戶端第一次拉取某個鏡像時,代理緩存?zhèn)}庫會向外網(wǎng)倉庫請求鏡像并下載至本地緩存。
- 隨后其他客戶端拉取同一鏡像時,直接從本地緩存?zhèn)}庫獲取,避免重復訪問外網(wǎng)。
- 有效節(jié)約內(nèi)外網(wǎng)帶寬,減少 Docker Hub 的訪問頻率,避免觸發(fā)速率限制。
從 Harbor v2.1.1 起,代理緩存功能已優(yōu)化支持 Docker Hub 的速率限制策略,保證流暢使用。
環(huán)境假設
- 已搭建內(nèi)網(wǎng) Harbor v2.1.1 或以上版本
- 內(nèi)網(wǎng) Harbor 服務器 IP:10.0.0.38,監(jiān)聽端口為 8004
- 目標緩存外網(wǎng)鏡像倉庫為官方 Docker Hub
配置步驟
1. 新建代理緩存?zhèn)}庫
- 登錄 Harbor 管理控制臺,進入【系統(tǒng)管理】-【倉庫管理】。
- 創(chuàng)建新項目,命名為
dockerhub(或者其他合適名稱)。 - 進入該項目,選擇【倉庫】 - 【代理緩存】 - 【+ 新建代理緩存?zhèn)}庫】。
- 填寫代理源倉庫地址,例如
https://docker.m.daocloud.io(Docker 國內(nèi)鏡像源),并設置代理倉庫名稱為dockerhub。 - 保存完成代理緩存?zhèn)}庫創(chuàng)建。
2. 新建代理緩存項目
為了管理代理倉庫,我們通常單獨創(chuàng)建一個項目用于代理緩存,方便權限和鏡像分類。
- 在 Harbor 上創(chuàng)建名為
dockerhub的項目(或配合代理緩存?zhèn)}庫名一致)。 - 確認該項目已經(jīng)啟用了代理緩存?zhèn)}庫支持。
3. 通過代理緩存項目拉取鏡像
配置完成后,客戶端只需修改鏡像源地址前綴,指向代理緩存項目即可使用緩存功能。
docker login 10.0.0.38:8004
docker pull 10.0.0.38:8004/dockerhub/mysql:latest
運行以上命令后,如果本地緩存庫沒有 mysql:latest,Harbor 會自動從 Docker Hub 拉取并緩存鏡像。后續(xù)拉取同樣的鏡像時,則直接從本地緩存獲取,速度更快且不消耗外網(wǎng)帶寬。
示例拉取日志:
latest: Pulling from dockerhub/mysql
0e03bdcc26d7: Pull complete
Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for 10.0.0.38:8004/dockerhub/mysql:latest
驗證緩存是否成功
登錄 Harbor Web 控制臺,切換到 dockerhub 項目,您可以看到已緩存的鏡像 mysql:latest 列表。與內(nèi)網(wǎng)倉庫鏡像對應,說明代理緩存?zhèn)}庫工作正常。
總結(jié)
通過 Harbor 的代理緩存功能,內(nèi)網(wǎng)用戶可以:
- 無感知訪問外網(wǎng)鏡像資源
- 避免重復拉取同一鏡像節(jié)約帶寬
- 緩存鏡像有效管理版本變更
- 解決 Docker Hub 速率限制帶來的訪問瓶頸
這對內(nèi)網(wǎng)環(huán)境搭建私有鏡像倉庫、保證開發(fā)效率、降低運維壓力具有非常大幫助。建議近期升級 Harbor 至 v2.1.1 及以上版本,充分利用代理緩存優(yōu)勢。
作者:李博帥
鏈接:https://juejin.cn/post/7496341294567096371
來源:稀土掘金
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。