跳轉到主要內容
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路徑無使用者前綴(pythonubuntupostgres)、有官方徽章Docker 直接策展,遵循 Dockerfile 最佳實踐、近乎無 CVE
Verified Publisher有「Verified Publisher」徽章,路徑帶廠商名經 Docker 審核的商業廠商
社群映像格式 username/image、無徽章個別使用者,可信度靠下載數與聲譽自行判斷
判斷步驟:先看路徑格式(有沒有使用者前綴),再到 Hub 頁面確認徽章,最後看下載數與更新頻率。

Public 與 Private

PublicPrivate
可見性任何人可 pull,無需登入僅授權帳號可存取
免費方案無限 public repo1 個 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