Skip to content

dhi: add vex walkthrough#24992

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

dhi: add vex walkthrough#24992
craig-osterhout wants to merge 2 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 645b4c9
🔍 Latest deploy log https://app.netlify.com/projects/docsdocker/deploys/69fbbd1c5083870008378b98
😎 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

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.

1 participant