docker scout compare
| 描述 | 比较两张图片并显示差异(实验性) |
|---|---|
| 用法 | docker scout compare --to IMAGE|DIRECTORY|ARCHIVE [IMAGE|DIRECTORY|ARCHIVE] |
| 别名 | docker scout diff |
实验性
此命令为实验性功能。
实验性功能旨在用于测试和反馈,因为其功能或设计可能会在版本之间更改,恕不另行通知,或者在未来的版本中可能被完全移除。
描述
docker scout compare 命令分析两个镜像并显示对比。
此命令是实验性的,其行为将来可能会发生变化
此命令的预期用途是比较同一镜像的两个版本。 例如,当构建新镜像并将其与生产环境中运行的版本进行比较时。
如果未指定镜像,则使用最近构建的镜像作为比较目标。
支持以下构件类型:
- 镜像
- OCI 布局目录
- 由
docker save创建的 Tarball 归档 - 本地目录或文件
默认情况下,该工具需要一个镜像引用,例如:
rediscurlimages/curl:7.87.0mcr.microsoft.com/dotnet/runtime:7.0
如果您要分析的产物是 OCI 目录、tarball 归档文件、本地文件或目录,或者您希望控制镜像的解析来源,则必须在引用前加上以下前缀之一:
image://(默认) 使用本地镜像,或回退到注册表查找local://使用本地镜像存储中的镜像(不进行仓库查找)registry://使用来自注册中心的镜像(不使用本地镜像)oci-dir://使用 OCI 布局目录archive://使用由docker save创建的 tarball 归档文件fs://使用本地目录或文件sbom://SPDX 文件或带有 SPDX 断言的 in-toto 证明文件或syftjson SBOM 文件
选项
| 选项 | 默认 | 描述 |
|---|---|---|
-x, --exit-on | 以逗号分隔的条件列表,如果情况恶化,则使操作步骤失败,选项包括:vulnerability(漏洞)、policy(策略) | |
--format | text | 生成的漏洞报告输出格式: - 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 | 以逗号分隔的严重级别列表(严重、高、中、低、未指定),用于筛选 CVE | |
--only-stage | 多阶段 Docker 构建阶段名称列表(以逗号分隔) | |
--only-unfixed | 筛选未修复的 CVE | |
--org | Docker 组织的命名空间 | |
-o, --output | 将报告写入文件 | |
--platform | 要分析的镜像平台 | |
--ref | 如果提供的 tarball 包含多个引用,则使用此引用。 只能与归档一起使用 | |
--to | 要比较的镜像、目录或归档 | |
--to-env | 要比较的环境名称 | |
--to-latest | 最新处理的镜像用于比较 | |
--to-ref | 如果提供的 tarball 包含多个引用,则使用此引用。 只能与归档一起使用。 |
示例
将最近构建的镜像与 latest 标签进行比较
$ docker scout compare --to namespace/repo:latest
将本地构建与注册表中相同标签进行比较
$ 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