> For the complete documentation index, see [llms.txt](https://philipzheng.gitbook.io/docker_practice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://philipzheng.gitbook.io/docker_practice/repository.md).

# 倉庫

倉庫（`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：企業級完整解決方案，支援權限管理、備份等

## 本章內容

* [Docker Hub](/docker_practice/repository/dockerhub.md)
* [私有倉庫](/docker_practice/repository/local_repo.md)
* [私有倉庫進階設定](/docker_practice/repository/config.md)
* [Nexus 3](/docker_practice/repository/nexus3.md)

## 本章小結

本章介紹了 Docker Hub 的使用、私有倉庫的搭建以及 Nexus 3 等企業級方案。

| 功能        | 說明                        |
| --------- | ------------------------- |
| **官方映像檔** | 優先使用的基礎映像檔                |
| **拉取限制**  | 匿名 100 次/6h，登入 200 次/6h   |
| **安全**    | 推薦啟用 2FA 並使用 Access Token |
| **自動化**   | 支援 Webhooks 和自動建立         |

### 延伸閱讀

* [私有倉庫](/docker_practice/repository/local_repo.md)：搭建自己的 Registry
* 映像檔加速器：加速下載（詳見「安裝」章節）
