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 格式docker scout sbom
不是 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 提供了一个默认的 SBOM 生成器,它与 Docker Scout 使用的不同。您可以使用--attest
命令的标志将 BuildKit 配置为使用 Docker Scout SBOM 生成器docker build
。 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 .