Docker eliminar imágenes del tipo "none"
Quitar imágenes de construcción incompleta en docker
¿Qué es una imagen "None"?
Las imágenes none son imágenes que no se han terminado de construir por algún motivo, porque se ha cancelado su construcción de forma explícita
o alguna instrucción en el Dockerfile ha causado un error y se ha abortado la operación.
Pero no solo son imágenes fallidas sino también de tipo capa (layer) o base. Estas no se podrán borrar ya que suelen tener dependencia descendente (tienen imágenes hijas).
Es decir, hay imágenes construidas que usan estas capas como base. (ver imágen en la parte inferior)
Listando imágenes
#todas las imágenes
docker image ls -a
#todas las imágenes colgadas (dangling) o que se han quedado a media construcción. No lista las tipo capa
docker images -f dangling=true
¿Como borrar las imágenes?
Comandos:
#elimina todas las imágenes que no se esten usando
docker image prune -a
#elimina todas las imágenes colgadas (dangling) o que llevan la palabra <none> en REPOSITORY y en el TAG
docker rmi $(docker images dangling=true -q)
# elimina todas las imágenes que tienen <none> en el nombre
docker rmi $(docker images | tail -n +2 | awk '$1 == "<none>" {print $'3'}')
# otra forma, con xargs
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
Sobre xargs
#sobre xargs:
xargs sirve para ejecutar un comando tomando como parametros de entrada para este el resultado de un comando anterior
#algo asÍ:
comando-uno | xargs otro-comando (este segundo comando espera como parámetros lo devuelto por comando-uno)
Como nota final
Si ejecutamos el siguiente comando: docker rmi $(docker images -a | tail -n +2 | awk '$1 == "<none>" {print $'3'}')
intentara borrar todas las imágenes none
pero dara error para aquellas de tipo capa.
Notese el flag -a.
Asi:
Autor: Eduardo A. F.
Publicado: 28-10-2021 21:33