Docker 強化映象如何進行測試

Docker 強化映象 (DHI) 旨在實現安全、精簡和生產就緒。為確保其可靠性和安全性,Docker 採用全面的測試策略,您可以使用簽名證明和開放工具獨立驗證。

每個映象都經過標準合規性、功能性和安全性測試。測試結果作為簽名證明嵌入,可以使用 Docker Scout CLI 透過程式設計方式檢查和驗證

測試策略概述

DHI 的測試過程主要關注兩個方面

  • 映象標準合規性:確保每個映象都符合嚴格的大小、安全性和相容性標準。
  • 應用程式功能:驗證映象中的應用程式功能是否正常。

映象標準合規性

每個 DHI 都經過嚴格檢查,以滿足以下標準

  • 最小攻擊面:映象構建得儘可能小,移除不必要的元件以減少潛在漏洞。
  • 接近零的已知 CVE:使用 Docker Scout 等工具掃描映象,確保其沒有已知的常見漏洞和暴露 (CVE)。
  • 多架構支援:DHI 針對多種架構(linux/amd64linux/arm64)構建,以確保廣泛相容性。
  • Kubernetes 相容性:映象經過測試,可在 Kubernetes 叢集中無縫執行,確保它們滿足容器編排環境的要求。

應用程式功能測試

Docker 測試 Docker 強化映象,以確保它們在典型使用場景中表現符合預期。這包括驗證以下內容:

  • 應用程式在容器化環境中成功啟動和執行。
  • 執行時行為符合上游預期。
  • 構建變體(如 -dev 映象)支援常見的開發和構建任務。

目標是確保 DHI 在最常見的使用場景中開箱即用,同時保持強化、精簡的設計。

自動化測試和 CI/CD 整合

Docker 將自動化測試整合到其持續整合/持續部署 (CI/CD) 管道中

  • 自動化掃描:每個映象構建都會觸發自動化漏洞掃描和合規性檢查。
  • 可重現構建:構建過程設計為可重現,確保不同環境之間的一致性。
  • 持續監控:Docker 持續監控新的漏洞並相應更新映象,以維護安全標準。

測試證明

Docker 提供了一份測試證明,詳細說明了每個 DHI 所經歷的測試和驗證過程。

檢視和驗證測試證明

您可以使用 Docker Scout CLI 檢視和驗證此證明。

  1. 使用 docker scout attest get 命令和測試謂詞型別

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --predicate \
      <your-namespace>/dhi-<image>:<tag> --platform <platform>
    

    例如:

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --predicate \
      docs/dhi-python:3.13 --platform linux/amd64
    

    這包含測試列表及其結果。

    示例輸出

        v SBOM obtained from attestation, 101 packages found
        v Provenance obtained from attestation
        {
          "reportFormat": "CTRF",
          "results": {
            "summary": {
              "failed": 0,
              "passed": 1,
              "skipped": 0,
              "start": 1749216533,
              "stop": 1749216574,
              "tests": 1
            },
            "tests": [
              {
                ...
    
  2. 驗證測試證明簽名。為確保證明真實並由 Docker 簽名,請執行

    docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --verify \
      <your-namespace>/dhi-<image>:<tag> --platform <platform>
    

    示例輸出

     v SBOM obtained from attestation, 101 packages found
     v Provenance obtained from attestation
     v cosign verify registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 \
         --key https://registry.scout.docker.com/keyring/dhi/latest.pub --experimental-oci11
    
       Verification for registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 --
       The following checks were performed on each of these signatures:
         - The cosign claims were validated
         - Existence of the claims in the transparency log was verified offline
         - The signatures were verified against the specified public key
    
     i Signature payload
     ...
    

如果證明有效,Docker Scout 將確認簽名並顯示匹配的 cosign verify 命令。

要檢視其他證明,例如 SBOM 或漏洞報告,請參閱驗證映象