第六章 訪問倉庫

倉庫 (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:企業級完整解決方案,支援許可權管理、備份等

本章內容

第 43 页,共 196 页
使用 mdPress 构建