Use Scout with different artifact types
Some of the Docker Scout CLI commands support prefixes for specifying the location or type of artifact that you would like to analyze.
By default, image analysis with the docker scout cves
command
targets images in the local image store of the Docker Engine.
The following command always uses a local image if it exists:
$ docker scout cves <image>
If the image doesn't exist locally, Docker pulls the image before running the analysis. Analyzing the same image again would use the same local version by default, even if the tag has since changed in the registry.
By adding a registry://
prefix to the image reference,
you can force Docker Scout to analyze the registry version of the image:
$ docker scout cves registry://<image>
Supported prefixes
The supported prefixes are:
Prefix | Description |
---|---|
image:// (default) |
Use a local image, or fall back to a registry lookup |
local:// |
Use an image from the local image store (don't do a registry lookup) |
registry:// |
Use an image from a registry (don't use a local image) |
oci-dir:// |
Use an OCI layout directory |
archive:// |
Use a tarball archive, as created by docker save |
fs:// |
Use a local directory or file |
You can use prefixes with the following commands:
docker scout compare
docker scout cves
docker scout quickview
docker scout recommendations
docker scout sbom
Examples
This section contains a few examples showing how you can use prefixes
to specify artifacts for docker scout
commands.
Analyze a local project
The fs://
prefix lets you analyze local source code directly,
without having to build it into a container image.
The following docker scout quickview
command gives you an
at-a-glance vulnerability summary of the source code in the current working directory:
$ docker scout quickview fs://.
To view the details of vulnerabilities found in your local source code, you can
use the docker scout cves --details fs://.
command. Combine it with
other flags to narrow down the results to the packages and vulnerabilities that
you're interested in.
$ docker scout cves --details --only-severity high fs://.
✓ File system read
✓ Indexed 323 packages
✗ Detected 1 vulnerable package with 1 vulnerability
## Overview
│ Analyzed path
────────────────────┼──────────────────────────────
Path │ /Users/david/demo/scoutfs
vulnerabilities │ 0C 1H 0M 0L
## Packages and Vulnerabilities
0C 1H 0M 0L fastify 3.29.0
pkg:npm/fastify@3.29.0
✗ HIGH CVE-2022-39288 [OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities]
https://scout.docker.com/v/CVE-2022-39288
fastify is a fast and low overhead web framework, for Node.js. Affected versions of
fastify are subject to a denial of service via malicious use of the Content-Type
header. An attacker can send an invalid Content-Type header that can cause the
application to crash. This issue has been addressed in commit fbb07e8d and will be
included in release version 4.8.1. Users are advised to upgrade. Users unable to
upgrade may manually filter out http content with malicious Content-Type headers.
Affected range : <4.8.1
Fixed version : 4.8.1
CVSS Score : 7.5
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
1 vulnerability found in 1 package
LOW 0
MEDIUM 0
HIGH 1
CRITICAL 0
Compare a local project to an image
With docker scout compare
, you can compare the analysis of source code on
your local filesystem with the analysis of a container image.
The following example compares local source code (fs://.
)
with a registry image registry://docker/scout-cli:latest
.
In this case, both the baseline and target for the comparison use prefixes.
$ docker scout compare fs://. --to registry://docker/scout-cli:latest --ignore-unchanged
WARN 'docker scout compare' is experimental and its behaviour might change in the future
✓ File system read
✓ Indexed 268 packages
✓ SBOM of image already cached, 234 packages indexed
## Overview
│ Analyzed File System │ Comparison Image
─────────────────────────┼────────────────────────────────────────────────┼─────────────────────────────────────────────
Path / Image reference │ /Users/david/src/docker/scout-cli-plugin │ docker/scout-cli:latest
│ │ bb0b01303584
platform │ │ linux/arm64
provenance │ https://github.com/dvdksn/scout-cli-plugin.git │ https://github.com/docker/scout-cli-plugin
│ 6ea3f7369dbdfec101ac7c0fa9d78ef05ffa6315 │ 67cb4ef78bd69545af0e223ba5fb577b27094505
vulnerabilities │ 0C 0H 1M 1L │ 0C 0H 1M 1L
│ │
size │ 7.4 MB (-14 MB) │ 21 MB
packages │ 268 (+34) │ 234
│ │
## Packages and Vulnerabilities
+ 55 packages added
- 21 packages removed
213 packages unchanged
The previous example is truncated for brevity.
View the SBOM of an image tarball
The following example shows how you can use the archive://
prefix
to get the SBOM of an image tarball, created with docker save
.
The image in this case is docker/scout-cli:latest
,
and the SBOM is exported to file sbom.spdx.json
in SPDX format.
$ docker pull docker/scout-cli:latest
latest: Pulling from docker/scout-cli
257973a141f5: Download complete
1f2083724dd1: Download complete
5c8125a73507: Download complete
Digest: sha256:13318bb059b0f8b0b87b35ac7050782462b5d0ac3f96f9f23d165d8ed68d0894
$ docker save docker/scout-cli:latest -o scout-cli.tar
$ docker scout sbom --format spdx -o sbom.spdx.json archive://scout-cli.tar
Learn more
Read about the commands and supported flags in the CLI reference documentation: