Skip to content

dhi: add vex walkthrough#24992

Open
craig-osterhout wants to merge 4 commits into
docker:mainfrom
craig-osterhout:vex-guide
Open

dhi: add vex walkthrough#24992
craig-osterhout wants to merge 4 commits into
docker:mainfrom
craig-osterhout:vex-guide

Conversation

@craig-osterhout
Copy link
Copy Markdown
Contributor

@craig-osterhout craig-osterhout commented May 6, 2026

Description

Added VEX walkthrough guide for Docker Hardened Images

The existing DHI documentation covers VEX concepts and scanner integration, but as separate reference topics. Users who want to understand VEX in practice have to piece together the workflow themselves.
This guide shows the full workflow end-to-end against a real image (dhi.io/python:3.13): scan without VEX to get the raw CVE baseline, fetch the attestation, scan again with VEX applied, then inspect every suppression and the reasoning behind it. Each step shows actual command output so readers can compare what they see against a known reference.
The guide covers:

  • Before/after scans with Trivy and Grype to make the VEX effect concrete
  • Docker Scout's automatic VEX integration as a contrast
  • Trivy's --show-suppressed flag to surface per-CVE justification codes
  • jq queries against the raw VEX file to read Docker's human-readable reasoning and filter by status (not_affected, under_investigation, affected)

The goal is to give readers a working mental model of what VEX does and how to audit it — something a walkthrough can do that reference docs can't.

https://deploy-preview-24992--docsdocker.netlify.app/guides/dhi-vex-walkthrough/

Related issues or tickets

ENGDOCS-3239

Reviews

  • Editorial review

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 6, 2026

Deploy Preview for docsdocker ready!

Name Link
🔨 Latest commit d7e67ae
🔍 Latest deploy log https://app.netlify.com/projects/docsdocker/deploys/6a04ea655eae360008b1b02d
😎 Deploy Preview https://deploy-preview-24992--docsdocker.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@craig-osterhout
Copy link
Copy Markdown
Contributor Author

/review

Copy link
Copy Markdown
Contributor

@docker-agent docker-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assessment: 🟡 NEEDS ATTENTION

Note: The automated verifier returned an empty response for this review. The findings below are from the drafter and have been manually verified against the diff by the coordinator agent.

Summary: The new VEX walkthrough guide is well-structured and covers the workflow end-to-end. Four medium-severity style and content issues were found in the added lines.

Comment thread content/guides/dhi-vex-walkthrough.md Outdated
Comment thread content/guides/dhi-vex-walkthrough.md
Comment thread content/guides/dhi-vex-walkthrough.md
Comment thread content/guides/dhi-vex-walkthrough.md Outdated
Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
@craig-osterhout craig-osterhout requested a review from a team May 6, 2026 22:14
@craig-osterhout craig-osterhout added the status/review Pull requests that are ready for review label May 6, 2026
@craig-osterhout
Copy link
Copy Markdown
Contributor Author

Internal feedback:

Any reason why you're passing --platform linux/amd64 while pulling the python 3.13? I tested this on a clean macOS setup (Apple Silicon, Docker Desktop) and found one blocker plus a few smaller items.

On arm64 Macs (the entire Apple Silicon line, which is most Mac users now), this forces a cross-platform pull. The image lands fine, but the Trivy container example that follows then fails:

FATAL Fatal error  run error: image scan error: scan error: scan failed:
failed analysis: unable to get the image's config file: unable to populate:
unable to open: unable to export the image: Error response from daemon:
unable to create manifests file: NotFound: content digest
sha256:76f1d9a391e838970bff7ddf3b742cb216392b65bb1ecf6d45c9b89ee26de65c: not found

Trivy's daemon-socket export path can't resolve the cross-arch manifest digest. Dropping the --platform flag and re-pulling native arm64 makes the same Trivy container command work first try, with output that matches the guide's example byte-for-byte

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
Copy link
Copy Markdown
Contributor

@dvdksn dvdksn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized I never posted this comment? Sorry, I had an unsubmitted review!

Comment thread content/guides/dhi-vex-walkthrough.md Outdated
Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
@craig-osterhout craig-osterhout requested a review from dvdksn May 13, 2026 21:18
Copy link
Copy Markdown

@docker-agent docker-agent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assessment: 🟢 APPROVE

This PR adds a clear, well-structured VEX walkthrough guide for Docker Hardened Images. Required front matter fields are present, no vendored content is touched, commands and flags appear accurate, and the step-by-step structure follows the tutorial format correctly. Two minor style violations from the Docker docs word list were found in the new guide.

> On Windows, the `-v /var/run/docker.sock:/var/run/docker.sock` socket mount
> used in the containerized scanner commands throughout this guide does not work
> on Docker Desktop for Windows. Instead, in Docker Desktop go to **Settings >
> General** and enable **Expose daemon on tcp://localhost:2375 without TLS**,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[LOW] Style violation: use "turn on"/"turn off" instead of "enable"/"disable"

The note uses enable and disable to describe toggling a Docker Desktop setting. Per the Docker docs word list in STYLE.md, the preferred terms are "turn on" and "turn off" (or "toggle on"/"toggle off").

Suggested rewrites:

  • enable **Expose daemon on tcp://localhost:2375 without TLS**turn on **Expose daemon on tcp://localhost:2375 without TLS**
  • disable the setting when you are done testingturn off the setting when you are done testing

```

Then scan without VEX to see the raw CVE count. Docker Scout automatically
applies VEX on Docker Hardened Images and can't show this unfiltered baseline.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[LOW] Style violation: avoid negative contraction "can't"

STYLE.md advises avoiding negative contractions (can't, don't, won't) and rewriting to be positive. The sentence could be rephrased, for example:

Docker Scout automatically applies VEX on Docker Hardened Images. To see the unfiltered CVE baseline, use Trivy or Grype.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/dhi area/guides status/review Pull requests that are ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants