Docker Scout SBOM

映像檔分析 使用映像檔 SBOM 來瞭解映像檔包含的套件和版本。Docker Scout 會使用映像檔上的 SBOM 證明(建議)。如果沒有可用的 SBOM 證明,Docker Scout 會透過索引映像檔內容來建立一個。

從 CLI 檢視

若要檢視 Docker Scout 產生的 SBOM 內容,您可以使用 docker scout sbom 命令。

$ docker scout sbom [IMAGE]

預設情況下,這會以 JSON 格式將 SBOM 列印到 stdout。 docker scout sbom 產生的預設 JSON 格式不是 SPDX-JSON。 若要輸出 SPDX,請使用 --format spdx 旗標

$ docker scout sbom --format spdx [IMAGE]

若要產生人類可讀取的清單,請使用 --format list 旗標

$ docker scout sbom --format list alpine

           Name             Version    Type
───────────────────────────────────────────────
  alpine-baselayout       3.4.3-r1     apk
  alpine-baselayout-data  3.4.3-r1     apk
  alpine-keys             2.4-r1       apk
  apk-tools               2.14.0-r2    apk
  busybox                 1.36.1-r2    apk
  busybox-binsh           1.36.1-r2    apk
  ca-certificates         20230506-r0  apk
  ca-certificates-bundle  20230506-r0  apk
  libc-dev                0.7.2-r5     apk
  libc-utils              0.7.2-r5     apk
  libcrypto3              3.1.2-r0     apk
  libssl3                 3.1.2-r0     apk
  musl                    1.2.4-r1     apk
  musl-utils              1.2.4-r1     apk
  openssl                 3.1.2-r0     apk
  pax-utils               1.3.7-r1     apk
  scanelf                 1.3.7-r1     apk
  ssl_client              1.36.1-r2    apk
  zlib                    1.2.13-r1    apk

有關 docker scout sbom 命令的詳細資訊,請參閱 CLI 參考

附加為建置證明

您可以產生 SBOM 並在建置時將其附加到映像檔作為證明。BuildKit 提供與 Docker Scout 使用不同的預設 SBOM 產生器。 您可以使用 docker build 命令的 --attest 旗標,將 BuildKit 設定為使用 Docker Scout SBOM 產生器。 Docker Scout SBOM 索引器提供更豐富的結果,並確保與 Docker Scout 映像檔分析更佳的相容性。

$ docker build --tag <org>/<image> \
  --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --push .

若要使用 SBOM 證明建置映像檔,您必須使用containerd 映像檔存放區功能,或將 docker-container 建置器與 --push 旗標一起使用,以將映像檔(含證明)直接推送到登錄檔。 經典映像檔存放區不支援清單或映像檔索引,這是將證明新增至映像檔所需的。

解壓縮到檔案

將映像檔的 SBOM 解壓縮到 SPDX JSON 檔案的命令,會根據映像檔是否已推送到登錄檔或是否為本機映像檔而有所不同。

遠端映像檔

若要解壓縮映像檔的 SBOM 並將其儲存到檔案,您可以使用 docker buildx imagetools inspect 命令。 此命令僅適用於登錄檔中的映像檔。

$ docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json

本機映像檔

若要解壓縮本機映像檔的 SPDX 檔案,請使用 local 匯出器和 scout-sbom-indexer SBOM 產生器外掛程式建置映像檔。

下列命令會將 SBOM 儲存到 build/sbom.spdx.json 的檔案中。

$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --output build .