Docker Scout 比较

描述比较两张图片并显示差异(实验性)
用法docker scout compare --to IMAGE|DIRECTORY|ARCHIVE [IMAGE|DIRECTORY|ARCHIVE]
别名
docker scout diff

实验的

此命令是实验性的。

实验性功能旨在用于测试和反馈,因为它们 功能或设计可能会在版本之间发生变化,恕不另行通知,或者 可以在将来的发行版中完全删除。

描述

该命令将分析两个镜像并显示比较。docker scout compare

此命令是实验性的,其行为将来可能会更改

此命令的预期用途是比较同一镜像的两个版本。 例如,当构建新镜像并将其与生产中运行的版本进行比较时。

如果未指定镜像,则使用最近构建的镜像 作为比较目标。

支持以下对象类型:

  • 镜像
  • OCI 布局目录
  • Tarball 档案,由docker save
  • 本地目录或文件

默认情况下,该工具需要镜像引用,例如:

  • redis
  • curlimages/curl:7.87.0
  • mcr.microsoft.com/dotnet/runtime:7.0

如果要分析的对象是 OCI 目录、tarball 存档、本地文件或目录, 或者,如果要控制从何处解析镜像,则必须在引用前加上以下选项之一:

  • image://(默认)使用本地镜像,或回退到注册表查找
  • local://使用本地镜像存储中的镜像(不执行注册表查找)
  • registry://使用注册表中的镜像 (不要使用本地镜像)
  • oci-dir://使用 OCI 布局目录
  • archive://使用 tarball 存档,由docker save
  • fs://使用本地目录或文件
  • sbom://SPDX 文件或带有 SPDX 谓词或 json SBOM 文件的 in-toto 证明文件syft

选项

选择违约描述
-x, --exit-on以逗号分隔的 action 步骤失败的条件列表,如果更糟,选项包括:vulnerability、policy
--formattext生成的漏洞报告的输出格式:
- 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
--orgDocker 组织的命名空间
-o, --output将报表写入文件
--platform镜像分析平台
--ref如果提供的 tarball 包含多个引用,则使用 Reference。
只能与存档一起使用
--to要比较的镜像、目录或存档
--to-env要比较的环境名称
--to-latest处理的最新镜像以进行比较
--to-ref如果提供的 tarball 包含多个引用,则使用 Reference。
只能与存档一起使用。

例子

将最近构建的镜像与最新标记进行比较

$ docker scout compare --to namespace/repo:latest

将本地 build 与注册表中的相同标记进行比较

$ 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