第六章 訪問倉庫
倉庫 (Repository) 是集中存放映象的地方。
一個容易混淆的概念是註冊伺服器 (Registry)。實際上註冊伺服器是管理倉庫的具體伺服器,每個伺服器上可以有多個倉庫,而每個倉庫下面有多個映象。從這方面來說,倉庫可以被認為是一個具體的專案或目錄。例如對於倉庫地址 docker.io/ubuntu 來說,docker.io 是註冊伺服器地址,ubuntu 是倉庫名。
大部分時候,並不需要嚴格區分這兩者的概念。
版本號說明
本章涉及的 Registry 和相關工具版本說明:
- Docker Registry / CNCF Distribution:本章範例使用
registry:2相容路徑;新生產部署應評估 Distribution 3.x,並核對設定路徑、遷移說明和生態相容性。已停止維護的registry:1不建議使用 - Nexus 3:建議指定具體版本(如
sonatype/nexus3:3.69)而非latest,避免自動升級帶來的相容性問題 - 映象標籤規範:
- 生產環境推送至倉庫時應明確指定版本號(如
myapp:v1.0.0) - 避免依賴
latest標籤,因為其含義存在歧義且易導致版本混淆
- 生產環境推送至倉庫時應明確指定版本號(如
為什麼需要私有倉庫?
在討論具體的安裝和設定前,讓我們先理解:什麼時候你應該建設私有倉庫?
開發團隊(有專利程式碼、不能公開):
- 需要私有倉庫儲存內部映象
- 涉及訪問控制和審計
- 強烈推薦使用託管方案(如 Harbor 或雲廠商提供的映象倉庫)
開源專案或個人學習:
- Docker Hub 公開倉庫足夠
- 無需自建私有倉庫的成本
企業級部署:
- 需要高可用、備份、災難恢復
- 推薦使用專業級方案(Nexus 3、Harbor)而非簡單的 Registry
本章涵蓋的方案從簡到複雜:
- Docker Registry:最小化部署(適合簡單場景)
- 私有倉庫高階設定:新增認證、HTTPS 等生產必需項
- Nexus 3:企業級完整解決方案,支援許可權管理、備份等