Docker Scout SBOM

镜像分析使用镜像 SBOM 来了解镜像包含哪些包和版本。 Docker Scout 使用 SBOM 证明(如果镜像上可用)(推荐)。 如果没有可用的 SBOM 证明,Docker Scout 会通过为镜像内容编制索引来创建一个。

从 CLI 查看

要查看 Docker Scout 生成的 SBOM 的内容,您可以使用命令。docker scout sbom

$ docker scout sbom [IMAGE]

默认情况下,这会将 SBOM 以 JSON 格式打印到 stdout。 生成的默认 JSON 格式不是 SPDX-JSON。 要输出 SPDX,请使用以下标志:docker scout sbom--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

有关该命令的更多信息,请参阅 CLI 参考docker scout sbom

附加为生成证明

您可以生成 SBOM 并将其在构建时作为证明附加到镜像。BuildKit 提供了一个默认的 SBOM 生成器,这与 Docker Scout 使用的生成器不同。 您可以将 BuildKit 配置为使用 Docker Scout SBOM 生成器 使用命令的标志。 Docker Scout SBOM 索引器提供更丰富的结果 并确保与 Docker Scout 镜像分析的更好兼容性。--attestdocker build

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

要使用 SBOM 证明构建镜像,您必须使用 containerd Image Store 功能,或者将构建器与标志一起使用来推送镜像(带有证明) 直接发送到注册表。经典镜像存储不支持清单列表 或 Image Indices,这是向镜像添加证明所必需的。docker-container--push

提取到文件

将镜像的 SBOM 提取到 SPDX JSON 文件的命令是 根据镜像是否已推送到注册表,或者是否 它是一个本地镜像。

远程镜像

要提取镜像的 SBOM 并将其保存到文件中,可以使用以下命令。此命令仅适用于 注册表。docker buildx imagetools inspect

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

本地镜像

要提取本地镜像的 SPDX 文件,请使用导出器构建镜像并使用 SBOM 生成器插件。localscout-sbom-indexer

以下命令将 SBOM 保存到 的文件中。build/sbom.spdx.json

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