Skip to content

Commit 76a1337

Browse files
dhi: update cli and add customization yaml (#25126)
<!--Delete sections as needed --> ## Description Updates DHI how-to docs for CLI v0.0.3 and adds a customization YAML reference. **cli.md / mirror.md / select-enterprise.md** (absorbs stale PR #24911): - Switch code blocks to `console` with `$` prefixes - Fix `mirror start` to use positional args (removes `-r` flag) - Fix `customization prepare` to redirect to stdout (removes `--output` flag) - Add attestation commands (`list`, `get`, `sbom`) - Update `customization get`, `delete`, and `build` commands to use IDs **customize.md**: - Add image customization YAML reference as a subsection of "Customize a Docker Hardened Image" - Add Helm chart customization YAML reference as a subsection of "Customize a DHI Helm chart" - Add CLI tab to "Edit or delete a customization" - Add intro to "Monitor customization builds" ## Related issues or tickets ENGDOCS-3277 ENGDOCS-3306 ## Reviews <!-- Notes for reviewers here --> <!-- List applicable reviews (optionally @tag reviewers) --> - [ ] Technical review - [ ] Editorial review - [ ] Product review --------- Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
1 parent 85d52f0 commit 76a1337

4 files changed

Lines changed: 428 additions & 103 deletions

File tree

content/manuals/dhi/how-to/cli.md

Lines changed: 107 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ description: Learn how to install and use docker dhi, the command-line interface
88

99
The `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

3536
Every 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

4445
List all available DHI images:
4546

46-
```bash
47-
docker dhi catalog list
47+
```console
48+
$ docker dhi catalog list
4849
```
4950

5051
Filter 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

5960
Get 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

6995
Start 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

78104
Mirror 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

84110
List 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

90116
Filter 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

98124
Stop 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

105131
Stop 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
121147
options 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 <id1> <id2> --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
164206
instructions, see [Enterprise
165207
repository](./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

175217
List 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

182224
Get 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

189231
View 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

198240
Most 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

Comments
 (0)