Filtrar imágenes por estado "dangling" (huérfanas)
En este paso, aprenderás a filtrar imágenes de Docker según su estado "dangling" (huérfanas). Las imágenes dangling son capas que no tienen relación con ninguna imagen etiquetada. Generalmente son el resultado de construir nuevas versiones de una imagen, lo que deja las capas antiguas sin etiqueta. Estas imágenes consumen espacio en disco y pueden eliminarse.
Para filtrar imágenes por su estado dangling, puedes usar el flag --filter
con la clave dangling
. El valor puede ser true
para mostrar solo imágenes dangling o false
para mostrar solo imágenes no dangling.
Primero, creemos una imagen dangling. Podemos hacer esto construyendo una nueva imagen que reemplace una existente. Usaremos un Dockerfile simple para esto.
Crea un archivo llamado Dockerfile
en tu directorio ~/project
con el siguiente contenido:
FROM alpine
CMD ["echo", "Hello, world!"]
Este Dockerfile es muy simple. Usa la imagen alpine
como base y simplemente imprime "Hello, world!" cuando se ejecuta un contenedor a partir de él.
Ahora, construyamos una imagen a partir de este Dockerfile y etiquetémosla.
Ejecuta el siguiente comando para construir la imagen y etiquetarla como my-image:latest
:
docker build -t my-image:latest .
Deberías ver una salida que indica el proceso de construcción:
[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest
Ahora, modifiquemos ligeramente el Dockerfile y construyámoslo nuevamente con la misma etiqueta. Esto creará una nueva imagen con la etiqueta my-image:latest
, y la imagen anterior que tenía esta etiqueta se convertirá en dangling.
Edita el Dockerfile
en tu directorio ~/project
para cambiar el comando:
FROM alpine
CMD ["echo", "Hello again!"]
Ahora, construye la imagen nuevamente con la misma etiqueta:
docker build -t my-image:latest .
Verás una salida similar a la construcción anterior, pero se generará un nuevo ID de imagen. La imagen anterior con la etiqueta my-image:latest
ahora es dangling.
Listemos todas las imágenes para ver la imagen dangling.
Ejecuta el comando:
docker images
Podrías ver una imagen con <none>
en las columnas REPOSITORY y TAG. Esta es una imagen dangling.
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
<none> <none> <old_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Ahora, filtremos para mostrar solo las imágenes dangling usando el flag --filter dangling=true
.
Ejecuta el comando:
docker images --filter dangling=true
Deberías ver solo la imagen dangling:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> <old_image_id> <created_time> <size>
Para ver solo imágenes no dangling, puedes usar --filter dangling=false
.
Ejecuta el comando:
docker images --filter dangling=false
Esto listará todas las imágenes que no son dangling:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Esto demuestra cómo filtrar imágenes según su estado dangling.