# Utilizar la CLI de DHI


La interfaz de línea de comandos (CLI) `docker dhi` es una herramienta para gestionar las Docker Hardened Images:
- Examinar el catálogo de imágenes DHI disponibles y sus metadatos
- Replicar imágenes DHI en la organización de tu Docker Hub
- Crear y gestionar personalizaciones de imágenes DHI
- Generar autenticación para repositorios de paquetes empresariales
- Supervisar las construcciones de personalizaciones

## Instalación

La CLI de `docker dhi` está disponible en la versión 4.65 y posteriores de [Docker Desktop](https://docs-docker.esdocu.com/desktop/).
También puedes instalar el binario `dhictl` independiente.

### Docker Desktop

El comando `docker dhi` se incluye en Docker Desktop 4.65 y posteriores. No se requiere ninguna instalación adicional.

### Binario independiente

1. Descarga el binario `dhictl` para tu plataforma desde la página de
   [versiones (releases)](https://github.com/docker-hardened-images/dhictl/releases).
2. Muévelo a un directorio en tu variable de entorno `PATH`:
    - `mv dhictl /usr/local/bin/` en _Linux_ y _macOS_
    - Mueve `dhictl.exe` a un directorio en tu variable de entorno `PATH` en _Windows_

## Uso

Cada comando tiene ayuda integrada accesible con la opción `--help`:

```bash
docker dhi --help
docker dhi catalog list --help
```

### Examinar el catálogo DHI

Lista todas las imágenes DHI disponibles:

```bash
docker dhi catalog list
```

Filtra por tipo, nombre o cumplimiento:

```bash
docker dhi catalog list --type image
docker dhi catalog list --filter golang
docker dhi catalog list --fips
docker dhi catalog list --stig
```

Obtén detalles de una imagen específica, incluyendo etiquetas disponibles y recuentos de CVE:

```bash
docker dhi catalog get <image-name>
```

### Replicar imágenes DHI




Inicia la réplica de una o más imágenes DHI en la organización de tu Docker Hub:

```bash
docker dhi mirror start --org my-org \
  -r dhi/golang,my-org/dhi-golang \
  -r dhi/nginx,my-org/dhi-nginx \
  -r dhi/prometheus-chart,my-org/dhi-prometheus-chart
```

Replicar con dependencias:

```bash
docker dhi mirror start --org my-org -r dhi/golang,my-org/dhi-golang --dependencies
```

Lista las imágenes replicadas en tu organización:

```bash
docker dhi mirror list --org my-org
```

Filtra las imágenes replicadas por nombre o tipo:

```bash
docker dhi mirror list --org my-org --filter python
```

Detén la réplica de una o más imágenes:

```bash
docker dhi mirror stop dhi-golang --org my-org
docker dhi mirror stop dhi-python dhi-golang --org my-org
```

Detén la réplica y elimina los repositorios:

```bash
docker dhi mirror stop dhi-golang --org my-org --delete
docker dhi mirror stop dhi-golang --org my-org --delete --force
```

### Personalizar imágenes DHI




La CLI se puede utilizar para crear y gestionar personalizaciones de imágenes DHI. Para obtener
instrucciones detalladas sobre la creación de personalizaciones utilizando la interfaz gráfica
(GUI), consulta [Personalizar una Docker Hardened Image](/dhi/how-to/customize/).

La siguiente es una referencia rápida para los comandos de la CLI. Para obtener detalles
completos sobre todas las opciones y parámetros, consulta la
[referencia de la CLI](/reference/cli/docker/dhi/).

```bash
# Preparar un andamio (scaffold) de personalización
docker dhi customization prepare golang 1.25 \
  --org my-org \
  --destination my-org/dhi-golang \
  --name "golang with git" \
  --output my-customization.yaml

# Crear una personalización
docker dhi customization create my-customization.yaml --org my-org

# Listar personalizaciones
docker dhi customization list --org my-org

# Filtrar personalizaciones por nombre, repositorio o fuente
docker dhi customization list --org my-org --filter git
docker dhi customization list --org my-org --repo dhi-golang
docker dhi customization list --org my-org --source golang

# Obtener una personalización
docker dhi customization get my-org/dhi-golang "golang with git" --org my-org --output my-customization.yaml

# Actualizar una personalización
# El archivo YAML debe incluir el campo 'id' para identificar la personalización a actualizar
docker dhi customization edit my-customization.yaml --org my-org

# Eliminar una personalización
docker dhi customization delete my-org/dhi-golang "golang with git" --org my-org

# Eliminar sin solicitud de confirmación
docker dhi customization delete my-org/dhi-golang "golang with git" --org my-org --yes
```

### Autenticación de paquetes empresariales




Genera credenciales de autenticación para acceder al repositorio de paquetes empresariales
endurecidos. Esto se utiliza al configurar tu gestor de paquetes para instalar paquetes
específicos de cumplimiento en tus propias imágenes. Para obtener instrucciones detalladas,
consulta [Repositorio empresarial](/dhi/how-to/hardened-packages/#enterprise-repository).

```bash
docker dhi auth apk
```

### Supervisar construcciones de personalización




Lista las construcciones de una personalización:

```bash
docker dhi customization build list my-org/dhi-golang "golang with git" --org my-org
docker dhi customization build list my-org/dhi-golang "golang with git" --org my-org --json
```

Obtén detalles de una construcción específica:

```bash
docker dhi customization build get my-org/dhi-golang "golang with git" <build-id> --org my-org
docker dhi customization build get my-org/dhi-golang "golang with git" <build-id> --org my-org --json
```

Ver los registros de la construcción (logs):

```bash
docker dhi customization build logs my-org/dhi-golang "golang with git" <build-id> --org my-org
docker dhi customization build logs my-org/dhi-golang "golang with git" <build-id> --org my-org --json
```

### Salida JSON

La mayoría de los comandos de listado y obtención admiten un parámetro `--json` para obtener
una salida legible por máquina:

```bash
docker dhi catalog list --json
docker dhi catalog get golang --json
docker dhi mirror list --org my-org --json
docker dhi mirror start --org my-org -r golang --json
docker dhi customization list --org my-org --json
docker dhi customization build list my-org/dhi-golang "golang with git" --org my-org --json
```

## Configuración

La CLI de `docker dhi` se puede configurar con un archivo YAML ubicado en:
- `$HOME/.config/dhictl/config.yaml` en _Linux_ y _macOS_
- `%USERPROFILE%\.config\dhictl\config.yaml` en _Windows_

Si `$XDG_CONFIG_HOME` está establecido, el archivo de configuración se ubica en
`$XDG_CONFIG_HOME/dhictl/config.yaml` (consulta la [Especificación de directorios
base XDG](https://specifications.freedesktop.org/basedir/spec/latest/)).

Opciones de configuración disponibles:

| Opción | Variable de entorno | Descripción |
|-------------|----------------------|---------------------------------------------------------------------------------------------------------------------------|
| `org`       | `DHI_ORG`            | Organización predeterminada de Docker Hub para los comandos de réplica y personalización. |
| `api_token` | `DHI_API_TOKEN`      | Token de Docker para la autenticación. Puedes generar un token en la [configuración de tu cuenta de Docker Hub](https://hub.docker.com/). |

Las variables de entorno tienen prioridad sobre los valores del archivo de configuración.

