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 镜像分析的更好兼容性。--attest
docker 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 生成器插件。local
scout-sbom-indexer
以下命令将 SBOM 保存到 的文件中。build/sbom.spdx.json
$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--output build .