Digests de imagen
¿Qué son los digests de imágenes de Docker?
Un digest de imagen de Docker es un identificador criptográfico único (hash SHA-256) que representa el contenido de una imagen de Docker. A diferencia de las etiquetas (tags), que se pueden reutilizar o cambiar, un digest es inmutable y garantiza que se descargue exactamente la misma imagen cada vez. Esto garantiza la consistencia en diferentes entornos y despliegues.
Por ejemplo, el digest para la imagen nginx:latest podría verse así:
sha256:94a00394bc5a8ef503fb59db0a7d0ae9e1110866e8aee8ba40cd864cea69ea1aEste digest identifica de forma exclusiva la versión específica de la imagen nginx:latest,
garantizando que cualquier cambio en el contenido de la imagen dé como resultado un digest diferente.
¿Por qué son importantes los digests de imágenes?
El uso de digests de imagen en lugar de etiquetas ofrece varias ventajas:
Inmutabilidad: Una vez que se construye una imagen y se genera su digest, el contenido vinculado a ese digest no puede cambiar. Esto significa que si descargas una imagen utilizando su digest, puedes tener la seguridad de que estás recuperando exactamente la misma imagen que se construyó originalmente.
Seguridad: Los digests ayudan a prevenir ataques a la cadena de suministro al garantizar que el contenido de la imagen no haya sido manipulado. Incluso un pequeño cambio en el contenido de la imagen dará como resultado un digest completamente diferente.
Consistencia: El uso de digests garantiza que se utilice la misma imagen en diferentes entornos, lo que reduce el riesgo de discrepancias entre los entornos de desarrollo, preproducción (staging) y producción.
Digests de las Docker Hardened Images
Al utilizar digests de imagen para hacer referencia a las DHI, puedes garantizar que tus aplicaciones siempre utilicen exactamente la misma versión de imagen segura, mejorando la seguridad y el cumplimiento.
Visualizar el digest de una imagen
Utilizar la CLI de Docker
Para ver el digest de una imagen de Docker, puedes utilizar el siguiente comando. Reemplaza
<image-name>:<tag> con el nombre y la etiqueta de la imagen.
$ docker buildx imagetools inspect <image-name>:<tag>
Utilizar la interfaz de usuario de Docker Hub
- Ve a Docker Hub e inicia sesión.
- Navega al espacio de nombres de tu organización y abre el repositorio DHI replicado.
- Selecciona la pestaña Tags para ver las variantes de la imagen.
- Cada etiqueta en la lista incluye un campo Digest que muestra el valor SHA-256 de la imagen.
Descargar una imagen por su digest
Descargar una imagen por su digest garantiza que estás descargando la versión exacta de la imagen identificada por el digest especificado.
Para descargar una imagen de Docker utilizando su digest, utiliza el siguiente comando. Reemplaza
<image-name> con el nombre de la imagen y <digest> con el digest de la imagen.
$ docker pull <image-name>@sha256:<digest>
Por ejemplo, para descargar una imagen docs/dhi-python:3.13 utilizando su digest de
94a00394bc5a8ef503fb59db0a7d0ae9e1110866e8aee8ba40cd864cea69ea1a, ejecutarías:
$ docker pull docs/dhi-python@sha256:94a00394bc5a8ef503fb59db0a7d0ae9e1110866e8aee8ba40cd864cea69ea1a
Imágenes multiplataforma y manifiestos
Las Docker Hardened Images se publican como imágenes multiplataforma, lo que significa
que una única etiqueta de imagen (como docs/dhi-python:3.13) puede admitir múltiples
sistemas operativos y arquitecturas de CPU, como linux/amd64, linux/arm64 y más.
En lugar de apuntar a una sola imagen, una etiqueta multiplataforma apunta a una lista de manifiestos (también llamada índice), que es un objeto de nivel superior que hace referencia a múltiples digests de imagen, uno para cada plataforma compatible.
Cuando inspeccionas una imagen multiplataforma utilizando docker buildx imagetools inspect, verás algo como esto:
Name: docs/dhi-python:3.13
MediaType: application/vnd.docker.distribution.manifest.list.v2+json
Digest: sha256:6e05...d231
Manifests:
Name: docs/dhi-python:3.13@sha256:94a0...ea1a
Platform: linux/amd64
...
Name: docs/dhi-python:3.13@sha256:7f1d...bc43
Platform: linux/arm64
...- El digest de la lista de manifiestos (
sha256:6e05...d231) identifica la imagen multiplataforma global. - Cada plataforma-specific imagen tiene su propio digest (por ejemplo,
sha256:94a0...ea1aparalinux/amd64).
Por qué es importante
- Reproducibilidad: Si estás construyendo o ejecutando contenedores en diferentes arquitecturas, el uso de una etiqueta por sí sola se resolverá en el digest de imagen correspondiente a tu plataforma.
- Verificación: Puedes descargar y verificar un digest de imagen específico para tu plataforma para asegurarte de que estás utilizando la versión exacta de la imagen, no solo la lista de manifiestos.
- Aplicación de políticas: Al aplicar políticas basadas en digests con Docker Scout, cada variante de plataforma se evalúa individualmente utilizando su digest.