受信任內容

Docker Hub 的受信任內容提供了一系列經過精心挑選、高品質且安全的映像檔,旨在讓開發人員對所使用資源的可靠性和安全性充滿信心。這些映像檔穩定、定期更新且遵循業界最佳實踐,為建置和部署應用程式提供了堅實的基礎。Docker Hub 的受信任內容包括 Docker 官方映像檔、驗證發行者映像檔以及 Docker 贊助的開源軟體映像檔。

Docker 官方映像

注意

Docker 正在停用 Docker 官方映像檔 (DOI) 的 Docker 內容信任 (DCT) 功能。從 2025 年 8 月 8 日開始,最舊的 DOI DCT 簽署憑證將陸續過期。如果您在 DOI 上使用 docker trust 指令,可能已經開始看到過期警告。這些憑證一旦由 Docker 客戶端快取,就不會再自動更新,導致憑證輪替變得不切實際。如果您已將 DOCKER_CONTENT_TRUST 環境變數設定為 true (DOCKER_CONTENT_TRUST=1),DOI 的拉取 (pull) 將會開始失敗。目前的解決方法是取消設定 DOCKER_CONTENT_TRUST 環境變數。使用 docker trust inspect 也會開始失敗,且不應再用於 DOI。

詳細資訊請參閱 https://www.docker.com/blog/retiring-docker-content-trust/

Docker 官方映像檔是一組託管於 Docker Hub 上的精選 Docker 儲存庫。

Docker 建議您在專案中使用 Docker 官方映像檔。這些映像檔擁有清晰的文件、推廣最佳實踐,並會定期更新。Docker 官方映像檔支援大多數常見的使用案例,非常適合 Docker 新手。進階使用者則可以受益於更專業的映像檔變體,並在學習 Dockerfile 的過程中參考 Docker 官方映像檔。

注意

Docker 官方映像檔的使用受 Docker 服務條款約束。

這些映像檔提供了基本的基礎儲存庫,作為大多數使用者的起點。

這些包括作業系統(例如 UbuntuAlpine)、程式語言執行環境(例如 PythonNode),以及其他必要工具(例如 memcachedMySQL)。

這些映像檔是 Docker Hub 上最安全的映像檔之一。這一點尤為重要,因為 Docker 官方映像檔是 Docker Hub 上最受歡迎的映像檔。通常,Docker 官方映像檔包含的 CVE(常見漏洞與暴露)極少甚至沒有。

這些映像檔體現了 Dockerfile 最佳實踐,並提供清晰的文件作為其他 Dockerfile 作者的參考。

該計畫中的映像檔在 Docker Hub 上擁有特殊標章,讓您可以更輕鬆地識別屬於 Docker 官方映像檔的專案。

Docker official image badge

每個 Docker 官方映像檔的儲存庫說明中都包含一個支援的標籤與對應的 Dockerfile 連結部分,其中列出了所有當前的標籤,並連結到建立這些標籤映像檔的 Dockerfile。此部分的目的是展示可用的映像檔變體。

Example: supported tags for Ubuntu

列在同一行的標籤均指代相同的底層映像檔。多個標籤可以指向同一個映像檔。例如,在先前從 ubuntu Docker 官方映像檔儲存庫截取的螢幕截圖中,標籤 24.04noble-20240225nobledevel 都指向同一個映像檔。

Docker 官方映像檔的 latest 標籤通常針對易用性進行了最佳化,並包含多種有用的軟體,例如開發人員工具和建置工具。透過將映像檔標記為 latest,映像檔維護人員實際上是在建議將該映像檔作為預設使用。換句話說,如果您不知道該使用哪個標籤,或者不熟悉底層軟體,那麼從 latest 映像檔開始通常是正確的選擇。隨著您對軟體和映像檔變體了解的深入,您可能會發現其他映像檔變體更符合您的需求。

Slim 映像檔

許多語言堆疊(例如 Node.jsPythonRuby)都提供 slim 標籤變體,旨在提供一個輕量級、生產就緒且套件較少的基礎映像檔。

slim 映像檔的典型使用模式是作為多階段建置最終階段的基礎映像檔。例如,您在建置的第一階段使用 latest 變體來建置應用程式,然後將應用程式複製到基於 slim 變體的最終階段。以下是一個 Dockerfile 範例。

FROM node:latest AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . ./
FROM node:slim
WORKDIR /app
COPY --from=build /app /app
CMD ["node", "app.js"]

Alpine 映像檔

許多 Docker 官方映像檔儲存庫也提供 alpine 變體。這些映像檔是建立在 Alpine Linux 發行版之上,而不是 Debian 或 Ubuntu。Alpine Linux 致力於為容器映像檔提供一個小巧、簡單且安全的基礎,而 Docker 官方映像檔的 alpine 變體通常旨在僅安裝必要的套件。因此,Docker 官方映像檔的 alpine 變體通常比 slim 變體還要小。

需要注意的主要一點是,Alpine Linux 使用 musl libc 而不是 glibc。此外,為了最大限度地減小映像檔大小,基於 Alpine 的映像檔通常不會預設包含 Git 或 Bash 等工具。根據您程式中 libc 需求或假設的深度,您可能會因為缺少函式庫或工具而遇到問題。

當您使用 Alpine 映像檔作為基礎時,請考慮以下選項,以使您的程式與 Alpine Linux 和 musl 相容:

  • 針對 musl libc 編譯您的程式
  • 將 glibc 函式庫靜態連結到您的程式中
  • 完全避免 C 依賴(例如,在建置 Go 程式時禁用 CGO)
  • 在 Dockerfile 中自行加入您需要的軟體。

如果您不熟悉如何安裝套件,請參閱 Docker Hub 上 alpine 映像檔的說明範例。

代號 (Codenames)

標籤中帶有看起來像《玩具總動員》(Toy Story) 角色名稱的單字(例如 bookwormbullseyetrixie)或形容詞(例如 jammynoble),表示它們所使用的基礎 Linux 發行版代號。Debian 的發行版代號是基於《玩具總動員》角色,而 Ubuntu 則採用「形容詞 + 動物」的形式。例如,Ubuntu 24.04 的代號是「Noble Numbat」(高貴的袋食蟻獸)。

Linux 發行版指示器很有幫助,因為許多 Docker 官方映像檔都提供基於多個底層發行版版本建置的變體(例如 postgres:bookwormpostgres:bullseye)。

其他標籤

除了此處描述的內容之外,Docker 官方映像檔的標籤可能還包含關於其映像檔變體用途的其他提示。這些標籤變體通常會在 Docker 官方映像檔的儲存庫文件中進行說明。閱讀「如何使用此映像檔」(How to use this image) 和「映像檔變體」(Image Variants) 部分將有助於您了解如何使用這些變體。

驗證發行者 (Verified Publisher) 映像檔

Docker 驗證發行者 (Verified Publisher) 計畫提供由商業發行商製作且經 Docker 驗證的高品質映像檔。

這些映像檔有助於開發團隊建立安全的軟體供應鏈,在流程早期減少對惡意內容的曝險,從而節省後續的時間和金錢。

該計畫中的映像檔在 Docker Hub 上擁有特殊標章,讓使用者能更輕鬆地識別 Docker 已驗證為高品質商業發行商的專案。

Docker-Sponsored Open Source badge

Docker 贊助的開源軟體映像檔

Docker 贊助的開源軟體 (OSS) 計畫提供由 Docker 贊助的開源專案所發佈與維護的映像檔。

該計畫中的映像檔在 Docker Hub 上擁有特殊標章,讓使用者能更輕鬆地識別 Docker 已驗證為受信任、安全且活躍的開源專案。

Docker-Sponsored Open Source badge
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.