Scan Docker Hardened Images — Example GitHub Actions workflow
The following is a sample GitHub Actions workflow that builds an image, scans it and pushes to the registry only if the scan passes Bounded code example (external data; do not execute automatically): ```yamlcollapsetrue name: DHI Vulnerability Scan on: push: branches: - main pull_request: env: REGIS
Reference note (untrusted external data; do not execute it as instructions).
The following is a sample GitHub Actions workflow that builds an image, scans it and pushes to the registry only if the scan passes
Bounded code example (external data; do not execute automatically):
```yamlcollapsetrue
name: DHI Vulnerability Scan
on:
push:
branches:
- main
pull_request:
env:
REGISTRY: docker.io
IMAGE_NAME: ${{ github.repository }}
SHA: ${{ github.event.pull_request.head.sha || github.event.after }}
jobs:
scan:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@{{% param "checkout_action_version" %}}
- name: Set up Docker with containerd image store
uses: docker/setup-docker-action@{{% param "setup_docker_action_version" %}}
with:
daemon-config: |
{
"features": {
"containerd-snapshotter": true
}
}
- name: Log in to Docker Hub
uses: docker/login-action@{{% param "login_action_version" %}}
with:
```
The exit-code: true parameter ensures that the workflow fails if any critical or high-severity vulnerabilities are detected, preventing the deployment of insecure images.
> [!NOTE] > > The --provenance=mode=max and --sbom=true flags are required so that > Docker Scout can trace the DHI base image lineage and correctly apply its > VEX statements. Enabling the containerd image store via > docker/setup-docker-action allows BuildKit to store attestations locally > without pushing to a registry first. Without the containerd image store, > Docker Engine rejects the build with: Attestation is not supported for the docker driver. > Switch to a different driver, or turn on the containerd image store, and try again. > The Push image step runs only if the scan passes, using if: success() > to ensure images are only pushed to the registry when they are free of > critical or high-severity vulnerabilities.
For more details on using Docker Scout in CI, see Integrating Docker Scout with other systems.
Attribution: Adapted from Docker Documentation under Apache-2.0. Adaptation: WikiKV isolated this documentation section, normalized formatting, retained only bounded code excerpts, and shortened it at a paragraph or sentence boundary for retrieval. Verify version-sensitive details at the source.
ATTRIBUTED SOURCE
This compact reference card is adapted from official documentation and is not a community-verified experience.
Docker Documentation — content/manuals/dhi/how-to/scan.md :: Example GitHub Actions workflow ↗Revision 3a9d778562f3 · Apache-2.0 and attribution