Skip to content

Commit 86df9c1

Browse files
dhi: initial draft
Signed-off-by: Craig <[email protected]>
1 parent f456066 commit 86df9c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3700
-3
lines changed

.vscode/docker.code-snippets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,4 @@
5454
"body": ["{{< button url=\"$1\" text=\"$2\" >}}"],
5555
"description": "Insert a Hugo button",
5656
},
57-
}
57+
}

content/manuals/_index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ params:
4949
description: Your command center for container development.
5050
icon: /icons/Whale.svg
5151
link: /desktop/
52+
- title: Docker Hardened Images
53+
description: Secure, minimal base images for trusted software delivery.
54+
icon: verified_user
55+
link: /docker-hardened-images/
5256
- title: Build Cloud
5357
description: Build your images faster in the cloud.
5458
icon: /icons/logo-build-cloud.svg

content/manuals/dhi/_index.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: Docker Hardened Images
3+
description: Secure, minimal, and production-ready base images
4+
weight: 13
5+
params:
6+
sidebar:
7+
badge:
8+
color: green
9+
text: New
10+
group: Products
11+
grid_sections:
12+
- title: Quickstart
13+
description: Follow a step-by-step guide to explore, mirror, and run a Docker Hardened Image.
14+
icon: rocket_launch
15+
link: /dhi/get-started/
16+
- title: About
17+
description: Learn what Docker Hardened Images are, how they're built, and what sets them apart from typical base images.
18+
icon: info
19+
link: /dhi/about/
20+
- title: Features
21+
description: Discover the security, compliance, and enterprise-readiness features built into Docker Hardened Images.
22+
icon: lock
23+
link: /dhi/features/
24+
- title: How-tos
25+
description: Step-by-step guides for using, verifying, scanning, and migrating to Docker Hardened Images.
26+
icon: play_arrow
27+
link: /dhi/how-to/
28+
- title: Core concepts
29+
description: Understand the secure supply chain principles that make Docker Hardened Images production-ready.
30+
icon: fact_check
31+
link: /dhi/core-concepts/
32+
- title: Troubleshoot
33+
description: Resolve common issues with building, running, or debugging Docker Hardened Images.
34+
icon: help_center
35+
link: /dhi/troubleshoot/
36+
---
37+
38+
{{< summary-bar feature_name="Docker Hardened Images" >}}
39+
40+
Docker Hardened Images (DHIs) are minimal, secure, and production-ready
41+
container base and application images maintained by Docker. Designed to reduce
42+
vulnerabilities and simplify compliance, DHIs integrate easily into your
43+
existing Docker-based workflows with little to no retooling required.
44+
45+
Explore the sections below to get started with Docker Hardened Images, integrate
46+
them into your workflow, and learn what makes them secure and enterprise-ready.
47+
48+
{{< grid
49+
items="grid_sections"
50+
>}}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: About
3+
description: dhi description
4+
weight: 5
5+
params:
6+
grid_about:
7+
- title: What are hardened images and why use them?
8+
description: Learn what a hardened image is, how Docker Hardened Images are built, what sets them apart from typical base and application images, and why you should use them.
9+
icon: info
10+
link: /dhi/about/what/
11+
- title: Image testing
12+
description: See how Docker Hardened Images are automatically tested for standards compliance, functionality, and security.
13+
icon: science
14+
link: /dhi/about/test/
15+
- title: Responsibility overview
16+
description: Understand Docker's role and your responsibilities when using Docker Hardened Images as part of your secure software supply chain.
17+
icon: group
18+
link: /dhi/about/responsibility/
19+
- title: Image types
20+
description: Learn about the different image types, distributions, and variants offered in the Docker Hardened Images catalog.
21+
icon: view_module
22+
link: /dhi/about/available/
23+
---
24+
25+
Docker Hardened Images (DHIs) are purpose-built for security, compliance, and
26+
reliability in modern software supply chains. This section explains what makes
27+
these images different from standard base and application images, how they're
28+
built and tested, and how Docker and users share responsibility in securing
29+
containerized workloads.
30+
31+
## Learn about Docker Hardened Images
32+
33+
{{< grid
34+
items="grid_about"
35+
>}}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
linktitle: Image types
3+
title: Available types of Docker Hardened Images
4+
description: Learn about the different image types, distributions, and variants offered in the Docker Hardened Images catalog.
5+
keywords: docker hardened images, distroless containers, distroless images, docker distroless, alpine base image, debian base image, development containers, runtime containers, secure base image, multi-stage builds
6+
weight: 20
7+
---
8+
9+
Docker Hardened Images (DHI) is a comprehensive catalog of
10+
security-hardened container images built to meet diverse
11+
development and production needs.
12+
13+
## Framework and application images
14+
15+
DHI includes a selection of popular frameworks and application images, each
16+
hardened and maintained to ensure security and compliance. These images
17+
integrate seamlessly into existing workflows, allowing developers to focus on
18+
building applications without compromising on security.
19+
20+
For example, you might find repositories like the following in the DHI catalog:
21+
22+
- `node`: framework for Node.js applications
23+
- `python`: framework for Python applications
24+
- `nginx`: web server image
25+
26+
## Compatibility options
27+
28+
Docker Hardened Images are available in different base image options, giving you
29+
flexibility to choose the best match for your environment and workload
30+
requirements:
31+
32+
- Debian-based images: A good fit if you're already working in glibc-based
33+
environments. Debian is widely used and offers strong compatibility across
34+
many language ecosystems and enterprise systems.
35+
36+
- Alpine-based images: A smaller and more lightweight option using musl libc.
37+
These images are faster to pull and have a reduced footprint, though you may
38+
need to account for musl-glibc differences in some applications.
39+
40+
Each image maintains a minimal and secure runtime layer by removing
41+
non-essential components like shells, package managers, and debugging tools.
42+
This helps reduce the attack surface while retaining compatibility with common
43+
runtime environments.
44+
45+
Example tags include:
46+
47+
- `3.9.23-alpine3.21`: Alpine-based image for Python 3.9.23
48+
- `3.9.23-debian12`: Debian-based image for Python 3.9.23
49+
50+
If you're not sure which to choose, start with the base you're already familiar
51+
with. Debian tends to offer the broadest compatibility.
52+
53+
## Development and runtime variants
54+
55+
To accommodate different stages of the application lifecycle, DHI offers images
56+
in several variants:
57+
58+
- Development (dev) images: Equipped with necessary development tools and
59+
libraries, these images facilitate the building and testing of applications in a
60+
secure environment. They include a shell, package manager, a root user, and
61+
other tools needed for development.
62+
63+
- Runtime images: Stripped of development tools, these images contain only the
64+
essential components needed to run applications, ensuring a minimal attack
65+
surface in production.
66+
67+
This separation supports multi-stage builds, enabling developers to compile code
68+
in a secure build environment and deploy it using a lean runtime image.
69+
70+
For example, you might find tags like the following in a DHI repository:
71+
72+
- `3.9.23-debian12`: runtime image for Python 3.9.23
73+
- `3.9.23-debian12-dev`: development image for Python 3.9.23
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
title: Understanding roles and responsibilities for Docker Hardened Images
3+
linkTitle: Responsibility overview
4+
description: Understand the division of responsibilities between Docker, upstream projects, and you when using Docker Hardened Images.
5+
keywords: software supply chain security, signed sbom, vex document, container provenance, image attestation
6+
weight: 46
7+
---
8+
9+
Docker Hardened Images (DHIs) are curated and maintained by Docker, and built
10+
using upstream open source components. To deliver security, reliability, and
11+
compliance, responsibilities are shared among three groups:
12+
13+
- Upstream maintainers: the developers and communities responsible for the
14+
open source software included in each image.
15+
- Docker: the provider of hardened, signed, and maintained container images.
16+
- You (the customer): the consumer who runs and, optionally, customizes DHIs
17+
in your environment.
18+
19+
This topic outlines who handles what, so you can use DHIs effectively and
20+
securely.
21+
22+
## Releases
23+
24+
- Upstream: Publishes and maintains official releases of the software
25+
components included in DHIs. This includes versioning, changelogs, and
26+
deprecation notices.
27+
- Docker: Builds, hardens, and signs Docker Hardened Images based on
28+
upstream versions. Docker maintains these images in line with upstream release
29+
timelines and internal policies.
30+
- You: Ensure you're staying on supported versions of DHIs and upstream
31+
projects. Using outdated or unsupported components can introduce security
32+
risk.
33+
34+
## Patching
35+
36+
- Upstream: Maintains and updates the source code for each component,
37+
including fixing vulnerabilities in libraries and dependencies.
38+
- Docker: Rebuilds and re-releases images with upstream patches applied.
39+
Docker also monitors for vulnerabilities and rapidly publishes updates to
40+
affected images.
41+
- You: Apply DHI updates in your environments and patch any software or
42+
dependencies you install on top of the base image.
43+
44+
## Testing
45+
46+
- Upstream: Defines the behavior and functionality of the original software,
47+
and is responsible for validating core features.
48+
- Docker: Validates that DHIs start, run, and behave consistently with
49+
upstream expectations. Docker also runs security scans and includes a [testing
50+
attestation](../core-concepts/attestations.md) with each image.
51+
- You: Test your application on top of DHIs and validate that any changes or
52+
customizations function as expected in your environment.
53+
54+
## Security and compliance
55+
56+
- Docker: Publishes signed SBOMs, VEX documents, provenance data, and CVE
57+
scan results with each image to support compliance and supply chain security.
58+
- You: Integrate DHIs into your security and compliance workflows, including
59+
vulnerability management and auditing.
60+
61+
## Summary
62+
63+
Docker Hardened Images give you a secure foundation, complete with signed
64+
metadata and upstream transparency. Your role is to make informed use of these
65+
images, apply updates promptly, and validate that your configurations and
66+
applications meet your internal requirements.

content/manuals/dhi/about/test.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
---
2+
title: How Docker Hardened Images are tested
3+
linktitle: Image testing
4+
description: See how Docker Hardened Images are automatically tested for standards compliance, functionality, and security.
5+
keywords: docker scout, test attestation, cosign verify, image testing, vulnerability scan
6+
weight: 45
7+
---
8+
9+
Docker Hardened Images (DHIs) are designed to be secure, minimal, and
10+
production-ready. To ensure their reliability and security, Docker employs a
11+
comprehensive testing strategy, which you can independently verify using signed
12+
attestations and open tooling.
13+
14+
Every image is tested for standards compliance, functionality, and security. The
15+
results of this testing are embedded as signed attestations, which can be
16+
[inspected and verified](#view-and-verify-the-test-attestation) programmatically
17+
using the Docker Scout CLI.
18+
19+
## Testing strategy overview
20+
21+
The testing process for DHIs focuses on two main areas:
22+
23+
- Image standards compliance: Ensuring that each image adheres to strict size,
24+
security, and compatibility standards.
25+
- Application functionality: Verifying that applications within the images
26+
function correctly and meet expected performance benchmarks.
27+
28+
## Image standards compliance
29+
30+
Each DHI undergoes rigorous checks to meet the following standards:
31+
32+
- Minimal attack surface: Images are built to be as small as possible, removing
33+
unnecessary components to reduce potential vulnerabilities.
34+
- Near-zero known CVEs: Images are scanned using tools like Docker Scout to
35+
ensure they are free from known Common Vulnerabilities and Exposures (CVEs).
36+
- Multi-architecture support: DHIs are built for multiple architectures,
37+
including `linux/amd64` and `linux/arm64`, to ensure broad compatibility.
38+
- Kubernetes compatibility: Images are tested to run seamlessly within
39+
Kubernetes clusters, ensuring they meet the requirements for container
40+
orchestration environments.
41+
42+
## Application functionality testing
43+
44+
Docker tests Docker Hardened Images to ensure they behave as expected in typical
45+
usage scenarios. This includes verifying that:
46+
47+
- Applications start and run successfully in containerized environments.
48+
- Runtime behavior aligns with upstream expectations.
49+
- Build variants (like `-dev` images) support common development and build tasks.
50+
51+
The goal is to ensure that DHIs work out of the box for the most common use
52+
cases while maintaining the hardened, minimal design.
53+
54+
## Automated testing and CI/CD integration
55+
56+
Docker integrates automated testing into its Continuous Integration/Continuous
57+
Deployment (CI/CD) pipelines:
58+
59+
- Automated scans: Each image build triggers automated scans for vulnerabilities
60+
and compliance checks.
61+
- Reproducible builds: Build processes are designed to be reproducible, ensuring
62+
consistency across different environments.
63+
- Continuous monitoring: Docker continuously monitors for new vulnerabilities
64+
and updates images accordingly to maintain security standards.
65+
66+
## Testing attestation
67+
68+
Docker provides a test attestation that details the testing and validation
69+
processes each DHI has undergone.
70+
71+
### View and verify the test attestation
72+
73+
You can view and verify this attestation using the Docker Scout CLI.
74+
75+
1. Use the `docker scout attest get` command with the test predicate type:
76+
77+
```console
78+
$ docker scout attest get \
79+
--predicate-type https://scout.docker.com/tests/v0.1 \
80+
--predicate \
81+
<your-namespace>/dhi-<image>:<tag> --platform <platform>
82+
```
83+
84+
For example:
85+
86+
```console
87+
$ docker scout attest get \
88+
--predicate-type https://scout.docker.com/tests/v0.1 \
89+
--predicate \
90+
docs/dhi-python:3.13 --platform linux/amd64
91+
```
92+
93+
This contains a list of tests and their results.
94+
95+
Example output:
96+
97+
```console
98+
v SBOM obtained from attestation, 101 packages found
99+
v Provenance obtained from attestation
100+
{
101+
"reportFormat": "CTRF",
102+
"results": {
103+
"summary": {
104+
"failed": 0,
105+
"passed": 1,
106+
"skipped": 0,
107+
"start": 1749216533,
108+
"stop": 1749216574,
109+
"tests": 1
110+
},
111+
"tests": [
112+
{
113+
...
114+
```
115+
116+
2. Verify the test attestation signature. To ensure the attestation is authentic
117+
and signed by Docker, run:
118+
119+
```console
120+
docker scout attest get \
121+
--predicate-type https://scout.docker.com/tests/v0.1 \
122+
--verify \
123+
<your-namespace>/dhi-<image>:<tag> --platform <platform>
124+
```
125+
126+
Example output:
127+
128+
```console
129+
v SBOM obtained from attestation, 101 packages found
130+
v Provenance obtained from attestation
131+
v cosign verify registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 \
132+
--key https://registry.scout.docker.com/keyring/dhi/latest.pub --experimental-oci11
133+
134+
Verification for registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 --
135+
The following checks were performed on each of these signatures:
136+
- The cosign claims were validated
137+
- Existence of the claims in the transparency log was verified offline
138+
- The signatures were verified against the specified public key
139+
140+
i Signature payload
141+
...
142+
```
143+
144+
If the attestation is valid, Docker Scout will confirm the signature and show
145+
the matching Cosign verify-attestation command.
146+
147+
To view other attestations, such as SBOMs or vulnerability reports, see [Verify
148+
an image](../how-to/verify.md).

0 commit comments

Comments
 (0)