@@ -8,6 +8,7 @@ description: Learn how to install and use docker dhi, the command-line interface
88
99The ` docker dhi ` command-line interface (CLI) is a tool for managing Docker Hardened Images:
1010- Browse the catalog of available DHI images and their metadata
11+ - View attestations for DHI images, including SBOMs and provenance
1112- Mirror DHI images to your Docker Hub organization
1213- Create and manage customizations of DHI images
1314- Generate authentication for enterprise package repositories
@@ -34,32 +35,57 @@ The `docker dhi` command is included in Docker Desktop 4.65 and later. No additi
3435
3536Every command has built-in help accessible with the ` --help ` flag:
3637
37- ``` bash
38- docker dhi --help
39- docker dhi catalog list --help
38+ ``` console
39+ $ docker dhi --help
40+ $ docker dhi catalog list --help
4041```
4142
4243### Browse the DHI catalog
4344
4445List all available DHI images:
4546
46- ``` bash
47- docker dhi catalog list
47+ ``` console
48+ $ docker dhi catalog list
4849```
4950
5051Filter by type, name, or compliance:
5152
52- ``` bash
53- docker dhi catalog list --type image
54- docker dhi catalog list --filter golang
55- docker dhi catalog list --fips
56- docker dhi catalog list --stig
53+ ``` console
54+ $ docker dhi catalog list --type image
55+ $ docker dhi catalog list --filter golang
56+ $ docker dhi catalog list --fips
57+ $ docker dhi catalog list --stig
5758```
5859
5960Get details of a specific image, including available tags and CVE counts:
6061
61- ``` bash
62- docker dhi catalog get < image-name>
62+ ``` console
63+ $ docker dhi catalog get < image-name>
64+ ```
65+
66+ ### View attestations
67+
68+ List all attestations attached to a DHI image:
69+
70+ ``` console
71+ $ docker dhi attestation list dhi/nginx:1.27
72+ $ docker dhi attestation list dhi/nginx:1.27 --platform linux/amd64
73+ $ docker dhi attestation list dhi/nginx:1.27 --predicate-type https://slsa.dev/provenance/v1
74+ $ docker dhi attestation list dhi/nginx:1.27 --json
75+ ```
76+
77+ Get a specific attestation by its referrer digest:
78+
79+ ``` console
80+ $ docker dhi attestation get dhi/nginx:1.27 sha256:< digest>
81+ $ docker dhi attestation get dhi/nginx:1.27 sha256:< digest> -o provenance.json
82+ ```
83+
84+ Display the SPDX SBOM for an image:
85+
86+ ``` console
87+ $ docker dhi attestation sbom dhi/nginx:1.27
88+ $ docker dhi attestation sbom dhi/nginx:1.27 --platform linux/amd64
6389```
6490
6591### Mirror DHI images
@@ -68,45 +94,45 @@ docker dhi catalog get <image-name>
6894
6995Start mirroring one or more DHI images to your Docker Hub organization:
7096
71- ``` bash
72- docker dhi mirror start --org my-org \
73- -r dhi/golang,my-org/dhi-golang \
74- -r dhi/nginx,my-org/dhi-nginx \
75- -r dhi/prometheus-chart,my-org/dhi-prometheus-chart
97+ ``` console
98+ $ docker dhi mirror start --org my-org \
99+ dhi/golang,my-org/dhi-golang \
100+ dhi/nginx,my-org/dhi-nginx \
101+ dhi/prometheus-chart,my-org/dhi-prometheus-chart
76102```
77103
78104Mirror with dependencies:
79105
80- ``` bash
81- docker dhi mirror start --org my-org -r dhi/golang,my-org/dhi-golang --dependencies
106+ ``` console
107+ $ docker dhi mirror start --org my-org dhi/golang,my-org/dhi-golang --dependencies
82108```
83109
84110List mirrored images in your organization:
85111
86- ``` bash
87- docker dhi mirror list --org my-org
112+ ``` console
113+ $ docker dhi mirror list --org my-org
88114```
89115
90116Filter mirrored images by name or type:
91117
92- ``` bash
93- docker dhi mirror list --org my-org --filter python
94- docker dhi mirror list --org my-org --type image
95- docker dhi mirror list --org my-org --type helm-chart
118+ ``` console
119+ $ docker dhi mirror list --org my-org --filter python
120+ $ docker dhi mirror list --org my-org --type image
121+ $ docker dhi mirror list --org my-org --type helm-chart
96122```
97123
98124Stop mirroring one or more images:
99125
100- ``` bash
101- docker dhi mirror stop dhi-golang --org my-org
102- docker dhi mirror stop dhi-python dhi-golang --org my-org
126+ ``` console
127+ $ docker dhi mirror stop dhi-golang --org my-org
128+ $ docker dhi mirror stop dhi-python dhi-golang --org my-org
103129```
104130
105131Stop mirroring and delete the repositories:
106132
107- ``` bash
108- docker dhi mirror stop dhi-golang --org my-org --delete
109- docker dhi mirror stop dhi-golang --org my-org --delete --force
133+ ``` console
134+ $ docker dhi mirror stop dhi-golang --org my-org --delete
135+ $ docker dhi mirror stop dhi-golang --org my-org --delete --force
110136```
111137
112138### Customize DHI images
@@ -121,39 +147,55 @@ The following is a quick reference for CLI commands. For complete details on all
121147options and flags, see the
122148[ CLI reference] ( /reference/cli/docker/dhi/ ) .
123149
124- ``` bash
125- # Prepare a customization scaffold
126- docker dhi customization prepare golang 1.25 \
150+ ``` console
151+ # Prepare a single customization scaffold
152+ $ docker dhi customization prepare golang 1.25 \
127153 --org my-org \
128154 --destination my-org/dhi-golang \
129155 --name "golang with git" \
130- --output my-customization.yaml
156+ > my-customization.yaml
157+
158+ # Prepare a bulk customization scaffold (pipe JSON array via stdin)
159+ $ echo ' [{"destination":"my-org/dhi-golang","tag-definition-id":"golang/alpine-3.23/1.24-dev"}]' \
160+ | docker dhi customization prepare --name "golang with git" --org my-org \
161+ > my-customization.yaml
131162
132163# Create a customization
133- docker dhi customization create my-customization.yaml --org my-org
164+ $ docker dhi customization create my-customization.yaml --org my-org
165+
166+ # Create with flag overrides (flags take precedence over the YAML file)
167+ $ docker dhi customization create my-customization.yaml --org my-org \
168+ --destination my-org/dhi-golang \
169+ --name "golang with git"
134170
135171# List customizations
136- docker dhi customization list --org my-org
172+ $ docker dhi customization list --org my-org
137173
138174# Filter customizations by name, repository, or source
139- docker dhi customization list --org my-org --filter git
140- docker dhi customization list --org my-org --repo dhi-golang
141- docker dhi customization list --org my-org --source golang
175+ $ docker dhi customization list --org my-org --filter git
176+ $ docker dhi customization list --org my-org --repo dhi-golang
177+ $ docker dhi customization list --org my-org --source golang
142178
143- # Get a customization
144- docker dhi customization get my-org/dhi-golang " golang with git " --org my-org --output my-customization.yaml
179+ # Get a customization by ID
180+ $ docker dhi customization get < id > --org my-org
145181
146182# Update a customization
147183# The YAML file must include the ' id' field to identify the customization to update
148- docker dhi customization edit my-customization.yaml --org my-org
184+ $ docker dhi customization edit my-customization.yaml --org my-org
185+
186+ # Delete a customization by ID
187+ $ docker dhi customization delete < id> --org my-org
149188
150- # Delete a customization
151- docker dhi customization delete my-org/dhi-golang " golang with git " --org my-org
189+ # Delete multiple customizations
190+ $ docker dhi customization delete < id 1> < id 2> --org my-org
152191
153192# Delete without confirmation prompt
154- docker dhi customization delete my-org/dhi-golang " golang with git " --org my-org --yes
193+ $ docker dhi customization delete < id > --org my-org --force
155194```
156195
196+ For a complete reference of all YAML fields, see
197+ [ Image customization YAML file] ( /dhi/how-to/customize/#image-customization-yaml-file ) .
198+
157199### Enterprise package authentication
158200
159201{{< summary-bar feature_name="Docker Hardened Images Enterprise" >}}
@@ -164,8 +206,8 @@ install compliance-specific packages in your own images. For detailed
164206instructions, see [ Enterprise
165207repository] ( ./hardened-packages.md#enterprise-repository ) .
166208
167- ``` bash
168- docker dhi auth apk
209+ ``` console
210+ $ docker dhi auth apk
169211```
170212
171213### Monitor customization builds
@@ -174,36 +216,37 @@ docker dhi auth apk
174216
175217List builds for a customization:
176218
177- ``` bash
178- docker dhi customization build list my-org/dhi-golang " golang with git " --org my-org
179- docker dhi customization build list my-org/dhi-golang " golang with git " --org my-org --json
219+ ``` console
220+ $ docker dhi customization build list < customization-id > --org my-org
221+ $ docker dhi customization build list < customization-id > --org my-org --json
180222```
181223
182224Get details of a specific build:
183225
184- ``` bash
185- docker dhi customization build get my-org/dhi-golang " golang with git " < build-id> --org my-org
186- docker dhi customization build get my-org/dhi-golang " golang with git " < build-id> --org my-org --json
226+ ``` console
227+ $ docker dhi customization build get < customization-id > < build-id> --org my-org
228+ $ docker dhi customization build get < customization-id > < build-id> --org my-org --json
187229```
188230
189231View build logs:
190232
191- ``` bash
192- docker dhi customization build logs my-org/dhi-golang " golang with git " < build-id> --org my-org
193- docker dhi customization build logs my-org/dhi-golang " golang with git " < build-id> --org my-org --json
233+ ``` console
234+ $ docker dhi customization build logs < customization-id > < build-id> --org my-org
235+ $ docker dhi customization build logs < customization-id > < build-id> --org my-org --json
194236```
195237
196238### JSON output
197239
198240Most list and get commands support a ` --json ` flag for machine-readable output:
199241
200- ``` bash
201- docker dhi catalog list --json
202- docker dhi catalog get golang --json
203- docker dhi mirror list --org my-org --json
204- docker dhi mirror start --org my-org -r golang --json
205- docker dhi customization list --org my-org --json
206- docker dhi customization build list my-org/dhi-golang " golang with git" --org my-org --json
242+ ``` console
243+ $ docker dhi catalog list --json
244+ $ docker dhi catalog get golang --json
245+ $ docker dhi attestation list dhi/nginx:1.27 --json
246+ $ docker dhi mirror list --org my-org --json
247+ $ docker dhi mirror start --org my-org dhi/golang,my-org/dhi-golang --json
248+ $ docker dhi customization list --org my-org --json
249+ $ docker dhi customization build list < customization-id> --org my-org --json
207250```
208251
209252## Configuration
0 commit comments