# SBOMs en Docker Scout


El [análisis de imágenes](/scout/explore/analysis/) utiliza las SBOM de las imágenes para comprender qué paquetes y versiones contiene una imagen. Docker Scout utiliza atestaciones de SBOM si están disponibles en la imagen (recomendado). Si no hay ninguna atestación de SBOM disponible, Docker Scout crea una indexando el contenido de la imagen.

## Ver desde la CLI

Para ver el contenido de la SBOM que genera Docker Scout, puedes utilizar el comando `docker scout sbom`.

```console
$ docker scout sbom [IMAGE]
```

De forma predeterminada, esto imprime la SBOM en formato JSON en la salida estándar (stdout). El formato JSON predeterminado producido por `docker scout sbom` no es SPDX-JSON. Para obtener la salida en formato SPDX, utiliza la bandera `--format spdx`:

```console
$ docker scout sbom --format spdx [IMAGE]
```

Para generar una lista legible por humanos, utiliza la bandera `--format list`:

```console
$ docker scout sbom --format list alpine

           Name             Version    Type
───────────────────────────────────────────────
  alpine-baselayout       3.4.3-r1     apk
  alpine-baselayout-data  3.4.3-r1     apk
  alpine-keys             2.4-r1       apk
  apk-tools               2.14.0-r2    apk
  busybox                 1.36.1-r2    apk
  busybox-binsh           1.36.1-r2    apk
  ca-certificates         20230506-r0  apk
  ca-certificates-bundle  20230506-r0  apk
  libc-dev                0.7.2-r5     apk
  libc-utils              0.7.2-r5     apk
  libcrypto3              3.1.2-r0     apk
  libssl3                 3.1.2-r0     apk
  musl                    1.2.4-r1     apk
  musl-utils              1.2.4-r1     apk
  openssl                 3.1.2-r0     apk
  pax-utils               1.3.7-r1     apk
  scanelf                 1.3.7-r1     apk
  ssl_client              1.36.1-r2    apk
  zlib                    1.2.13-r1    apk
```

Para obtener más información sobre el comando `docker scout sbom`, consulta la [referencia de la CLI](/reference/cli/docker/scout/sbom/).

## Adjuntar como atestación de construcción {#attest}

Puedes generar la SBOM y adjuntarla a la imagen en el momento de la construcción como una [atestación](/build/metadata/attestations/). BuildKit proporciona un generador de SBOM predeterminado que es diferente del que utiliza Docker Scout. Puedes configurar BuildKit para que utilice el generador de SBOM de Docker Scout utilizando la bandera `--attest` para el comando `docker build`. El indexador de SBOM de Docker Scout proporciona resultados más detallados y garantiza una mejor compatibilidad con el análisis de imágenes de Docker Scout.

```console
$ docker build --tag <org>/<image> \
  --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --push .
```

Para construir imágenes con atestaciones de SBOM, debes utilizar la función del [almacenamiento de imágenes containerd](/desktop/features/containerd/) o utilizar un constructor `docker-container` junto con la bandera `--push` para subir la imagen (con las atestaciones) directamente a un registro. El almacenamiento de imágenes clásico no es compatible con las listas de manifiestos ni con los índices de imágenes, que son necesarios para añadir atestaciones a una imagen.

## Extraer a un archivo

El comando para extraer la SBOM de una imagen a un archivo SPDX JSON es diferente dependiendo de si la imagen ha sido subida a un registro o si es una imagen local.

### Imagen remota

Para extraer la SBOM de una imagen y guardarla en un archivo, puedes utilizar el comando `docker buildx imagetools inspect`. Este comando únicamente funciona para imágenes que estén en un registro.

```console
$ docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json
```

### Imagen local

Para extraer el archivo SPDX de una imagen local, construye la imagen con el exportador `local` y utiliza el plugin del generador de SBOM `scout-sbom-indexer`.

El siguiente comando guarda la SBOM en un archivo en `build/sbom.spdx.json`.

```console
$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --output build .
```

