docker scout compare

說明比較兩個映像檔並顯示差異(實驗性)
用法docker scout compare --to IMAGE|DIRECTORY|ARCHIVE [IMAGE|DIRECTORY|ARCHIVE]
別名
docker scout diff

實驗性

此指令為實驗性。

實驗性功能旨在用於測試和回饋,因為它們的功能或設計可能會在版本之間發生變化,恕不另行通知,或者可能會在將來的版本中完全移除。

說明

docker scout compare 指令會分析兩個映像檔並顯示比較結果。

此指令為**實驗性**,其行為在未來可能會有所變更

此指令的預期用途是比較同一個映像檔的兩個版本。例如,當建置新的映像檔並與生產環境中執行的版本進行比較時。

如果未指定映像檔,則使用最近建置的映像檔作為比較目標。

支援以下成品類型

  • 映像檔
  • OCI 佈局目錄
  • docker save 建立的 Tarball 封存檔
  • 本機目錄或檔案

預設情況下,此工具需要映像檔參考,例如

  • redis
  • curlimages/curl:7.87.0
  • mcr.microsoft.com/dotnet/runtime:7.0

如果您要分析的成品是 OCI 目錄、tarball 封存檔、本機檔案或目錄,或者您想要控制映像檔的解析位置,則必須使用以下其中一個前綴來加上參考

  • image://(預設)使用本機映像檔,或者回退到登錄查詢
  • local:// 使用來自本機映像檔存放區的映像檔(不執行登錄查詢)
  • registry:// 使用來自登錄的映像檔(不使用本機映像檔)
  • oci-dir:// 使用 OCI 佈局目錄
  • archive:// 使用由 docker save 建立的 tarball 封存檔。
  • fs:// 使用本機目錄或檔案。
  • sbom:// SPDX 檔案或帶有 SPDX 述詞的 in-toto 證明檔案,或是 syft json SBOM 檔案。

選項

選項名稱預設值說明
-x, --exit-on以逗號分隔的條件清單,若情況惡化則使動作步驟失敗,選項包括:vulnerability(漏洞)、policy(策略)
--formattext產生的漏洞報告的輸出格式
- text:預設輸出,純文字,根據終端機設定可能帶有顏色
- markdown:Markdown 輸出
--hide-policies在輸出中隱藏策略狀態
--ignore-base過濾掉從基礎映像檔引入的 CVE
--ignore-unchanged過濾掉未變更的套件
--multi-stage顯示多階段 Docker 建置中的套件
--only-fixed僅顯示可修復的 CVE
--only-package-type以逗號分隔的套件類型清單(例如 apk、deb、rpm、npm、pypi、golang 等)
--only-policy以逗號分隔的策略清單,用於評估
--only-severity以逗號分隔的嚴重性清單(critical、high、medium、low、unspecified),用於篩選 CVE
--only-stage以逗號分隔的多階段 Docker 建置階段名稱清單
--only-unfixed僅顯示未修復的 CVE
--orgDocker 組織的命名空間
-o, --output將報告寫入檔案
--platform要分析的映像檔平台
--ref如果提供的 tarball 包含多個參考,則要使用的參考。
僅能與 archive 搭配使用
--to要比較的映像檔、目錄或封存檔
--to-env要比較的環境名稱
--to-latest要比較的最新處理過的映像檔
--to-ref如果提供的 tarball 包含多個參考,則要使用的參考。
僅能與 archive 搭配使用。

範例

將最近建立的映像檔與 latest 標籤進行比較

$ docker scout compare --to namespace/repo:latest

將本地建置與來自 registry 的相同標籤進行比較

$ docker scout compare local://namespace/repo:latest --to registry://namespace/repo:latest

忽略基礎映像檔

$ docker scout compare --ignore-base --to namespace/repo:latest namespace/repo:v1.2.3-pre

產生 markdown 輸出

$ docker scout compare --format markdown --to namespace/repo:latest namespace/repo:v1.2.3-pre

僅比較 maven 套件,且僅顯示 maven 套件的嚴重漏洞

$ docker scout compare --only-package-type maven --only-severity critical --to namespace/repo:latest namespace/repo:v1.2.3-pre

顯示兩個映像檔的所有策略結果

docker scout compare --to namespace/repo:latest namespace/repo:v1.2.3-pre