Docker Docker Hub
docker pull 的映像從哪來、怎麼判斷一個映像可不可信,這頁講清楚。
registry 與命名
Docker Hub 是 Docker 官方的雲端映像 registry(映像的集中倉庫,概念類比 npm 之於 Node 套件)。每個映像放在一個 repository 內,repo 內用 tag 區分版本。完整命名格式:
[registry]/[使用者或組織]/[repo]:[tag]
python:3.12-slim # Docker 官方映像(registry 與 library 前綴省略)
someuser/myapp:v1.0 # 個人 / 組織 repo
myregistry.local:5000/test:1.0 # 自架 registry
省略 :tag 等同 :latest,在 Dockerfile 與生產環境避免使用 latest(見 選擇映像)。
三種信任層級
不是所有映像都可信。看三個層級判斷:
| 類別 | 識別 | 維護者 |
|---|
| Docker Official Images | 路徑無使用者前綴(python、ubuntu、postgres)、有官方徽章 | Docker 直接策展,遵循 Dockerfile 最佳實踐、近乎無 CVE |
| Verified Publisher | 有「Verified Publisher」徽章,路徑帶廠商名 | 經 Docker 審核的商業廠商 |
| 社群映像 | 格式 username/image、無徽章 | 個別使用者,可信度靠下載數與聲譽自行判斷 |
判斷步驟:先看路徑格式(有沒有使用者前綴),再到 Hub 頁面確認徽章,最後看下載數與更新頻率。
Public 與 Private
| Public | Private |
|---|
| 可見性 | 任何人可 pull,無需登入 | 僅授權帳號可存取 |
| 免費方案 | 無限 public repo | 1 個 private repo(個人免費方案) |
登入、推、拉
docker pull python:3.12-slim # 拉官方映像
docker pull someuser/myapp:v1.0 # 拉使用者 repo
docker login # 登入(device code flow,瀏覽器確認)
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin # CI 用,避免密碼進 shell 歷史
docker tag myapp:latest user/myapp:v1.0 # push 前先 tag 成正確格式
docker push user/myapp:v1.0 # 推到自己的 repo
官方安全建議:設定 credential store,不要讓認證資訊明文存在 ~/.docker/config.json。
拉取次數限制(截至 2026-06)
| 帳號類型 | Pull 限制 | 週期 |
|---|
| 匿名(未登入) | 100 次 / 每個 IPv4 或 IPv6 /64 子網 | 每 6 小時 |
| 認證的免費帳號 | 200 次 | 每 6 小時 |
| 付費方案(Pro / Team / Business) | 無限制 | — |
超出限制會回 HTTP 429(Too Many Requests)。CI 環境最容易踩到,標準解法:docker login 後拉取(從匿名 100 升到 200)、升級付費方案,或在內網架 pull-through cache(用官方 registry 映像的 proxy 模式)。
接下來
官方參考:docs.docker.com/docker-hub/usage