¿Cómo enumerar y eliminar la imagen de Docker?
Publicado: 2021-08-03Docker es una plataforma conocida que le permite administrar, ejecutar y enviar sus aplicaciones como contenedores que empaquetan el sistema operativo y las bibliotecas dependientes junto con su aplicación.
Cubriremos la administración de imágenes de Docker, principalmente informando sobre las formas de enumerar las imágenes de Docker y obtener la información requerida y luego construir sobre ese aprendizaje para eliminar una o más imágenes de manera eficiente.
Entonces empecemos.
Listado de imágenes de Docker
Para enumerar las imágenes de Docker extraídas, use:
abhisheknair@geekflare:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Al igual que con otros comandos de la docker
, admite el comando de images
con múltiples opciones.
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
Si ejecuta docker images
sin ninguna opción, le mostrará las imágenes de nivel superior como docker image ls
, su repositorio y etiquetas y su tamaño en el disco.
abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Estas imágenes tienen capas intermedias que aumentan la facilidad de uso, aceleran el proceso de compilación y reducen el uso del disco que no se muestra en el comando anterior. El SIZE
es el espacio combinado ocupado por la imagen y todas sus imágenes principales. Si guarda el contenido de la imagen como un archivo Tar cuando save
una imagen en la ventana acoplable, será igual al tamaño indicado.
Una imagen se enumera varias veces si tiene varios nombres o etiquetas de repositorio, aunque la imagen individual identificada por su IMAGE ID
utiliza el SIZE
enumerado solo una vez.
Listar las imágenes más recientes
abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Listar imágenes por Repositorio y Etiqueta
Para enumerar todas las imágenes que pertenecen a un repositorio en particular, especifique el nombre del repositorio como:
abhisheknair@geekflare:~$ docker images redis REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Además, puede especificar el nombre del repositorio con una etiqueta para obtener una salida más filtrada:
abhisheknair@geekflare:~$ docker images redis:4.0 REPOSITORY TAG IMAGE ID CREATED SIZE redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Lista de ID de imágenes de longitud completa
Para enumerar todas las imágenes sin truncar el IMAGE ID
, utilice:
abhisheknair@geekflare:~$ docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE redis latest sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 9 days ago 105MB mysql latest sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707 10 days ago 514MB ubuntu latest sha256:c29284518f497b8c5f49933e74e43ca5221e69c8251e780427f7d12f716625ff 2 weeks ago 72.8MB nginx latest sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f 3 weeks ago 133MB hello-world latest sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 4 months ago 13.3kB redis 4.0 sha256:191c4017dcdd3370f871a4c6e7e1d55c7d9abed2bebf3005fb3e7d12161262b8 15 months ago 89.3MB abhisheknair@geekflare:~$
Lista de resúmenes de imágenes
Las imágenes de Docker que usan el formato v2 o posterior tienen un identificador de contenido direccionable conocido como digest
. Para enumerar los valores de resumen de imágenes, use el indicador --digest
como:
abhisheknair@geekflare:~$ docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE redis latest sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 aa4d65e670d6 9 days ago 105MB mysql latest sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd c60d96bd2b77 10 days ago 514MB ubuntu latest sha256:b3e2e47d016c08b3396b5ebe06ab0b711c34e7f37b98c9d37abe794b71cea0a2 c29284518f49 2 weeks ago 72.8MB nginx latest sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e d1165f221234 4 months ago 13.3kB redis 4.0 sha256:2e03fdd159f4a08d2165ca1c92adde438ae4e3e6b0f74322ce013a78ee81c88d 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$
Con un registro 2.0
, puede usar estos resúmenes con los comandos push
, pull
, create
, run
y rmi
. Esto también funciona con el comando FROM
en un Dockerfile
.
Filtrado de la salida
El comando docker
admite el filtrado con images
mediante el indicador --filter
. Los filtros soportados actualmente son:
- colgando (booleano - verdadero o falso)
- etiqueta (
label=<key>
olabel=<key>=<value>
) - before (
<image-name>[:<tag>]
,<image id>
o<image@digest>
) – filtra las imágenes creadas antes de la identificación o las referencias dadas - since (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) – filtra las imágenes creadas desde la identificación dada o las referencias - referencia (patrón de una referencia de imagen): filtrar imágenes cuya referencia coincida con el patrón especificado
Además, puede usar varios filtros combinándolos como:
$ docker images --filter "<key1>=<value1>" --filter"<key2>=<value2>"
Ejemplo:
abhisheknair@geekflare:~$ docker images --filter "before=redis" --filter "since=hello-world" REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB abhisheknair@geekflare:~$
Formateo de la salida
docker images
admiten la salida de formato que puede ser necesaria para anidar con otros comandos, secuencias de comandos u otros. Estos son los marcadores de posición admitidos para la --format
:
Marcador de posición | Descripción |
---|---|
.ID | ID de imagen |
.Repository | Repositorio de imágenes |
.Tag | Etiqueta de imagen |
.Digest | resumen de imagen |
.CreatedSince | Tiempo transcurrido desde que se creó la imagen |
.CreatedAt | La hora en que se creó la imagen. |
.Size | Tamaño del disco de imagen |
Como ejemplo, el siguiente comando imprime la salida sin encabezados y genera la ID
y el Repository
separados por dos puntos (:) para todas las imágenes:
abhisheknair@geekflare:~$ docker images --format "{{.ID}}: {{.Repository}}" aa4d65e670d6: redis c60d96bd2b77: mysql c29284518f49: ubuntu 4cdc5dd7eaad: nginx d1165f221234: hello-world 191c4017dcdd: redis abhisheknair@geekflare:~$
O para enumerar todas las imágenes con su repositorio y etiqueta en formato de tabla, puede usar:
abhisheknair@geekflare:~$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG aa4d65e670d6 redis latest c60d96bd2b77 mysql latest c29284518f49 ubuntu latest 4cdc5dd7eaad nginx latest d1165f221234 hello-world latest 191c4017dcdd redis 4.0 abhisheknair@geekflare:~$
Eliminar imágenes de Docker
Para eliminar una o más imágenes de Docker del sistema, usamos:

$ docker image rm [OPTIONS] IMAGE [IMAGE...]
Para eliminar una sola imagen, simplemente especifique el nombre de la imagen:
abhisheknair@geekflare:~$ docker image rm redis Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 abhisheknair@geekflare:~$
O para eliminar varias imágenes, especifique varios nombres de imágenes separados por espacios:
abhisheknair@geekflare:~$ docker image rm redis mariadb Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Untagged: mariadb:latest Untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d Deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db Deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba Deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 Deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa Deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 Deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 Deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 Deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 Deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e Deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 Deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 abhisheknair@geekflare:~$
Eliminación forzada
Es posible que se estén ejecutando contenedores que utilicen las imágenes que intenta eliminar. En tales casos, Docker le emitirá una advertencia cuando intente eliminar una imagen a la que se hace referencia.
abhisheknair@geekflare:~$ docker image rm nginx Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container ce908eadf829 is using its referenced image 4cdc5dd7eaad abhisheknair@geekflare:~$
Puede detener el contenedor asociado primero y luego volver a intentarlo o usar el indicador -f
que fuerza la eliminación de la imagen (tenga cuidado).
abhisheknair@geekflare:~$ docker image rm nginx -f Untagged: nginx:latest Untagged: nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f abhisheknair@geekflare:~$
Imágenes de ciruela pasa
Hay ciertas situaciones en las que las imágenes no utilizadas consumen espacio en el disco o simplemente necesita una limpieza de las imágenes antiguas que cuelgan. Puede limpiar tales imágenes no utilizadas usando:
$ docker image prune
Ejemplo:
abhisheknair@geekflare:~$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B abhisheknair@geekflare:~$
Si desea limpiar todas las imágenes que no son utilizadas por ningún contenedor, use la bandera -a
:
abhisheknair@geekflare:~$ docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Deleted Images: untagged: mariadb:latest untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 untagged: redis:latest untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Total reclaimed space: 445.2MB abhisheknair@geekflare:~$
También puede usar el indicador --force
o -f
para proceder a la limpieza sin confirmación o usar el indicador --filter
para proporcionar valores de filtro (por ejemplo, 'until=<timestamp>') al comando prune
.
Ejemplo:
$ docker image prune -a --force --filter "until=2021-01-04T00:00:00"
O
$ docker image prune --filter="label=deprecated"
Uso del comando rmi
También puede usar el comando rmi
con docker para eliminar imágenes.
Elimina (y quita etiquetas) una o más imágenes del nodo Docker. Si una imagen tiene varias etiquetas, usar este comando con la etiqueta como parámetro solo elimina la etiqueta. Si la etiqueta es la única para la imagen, se eliminan tanto la imagen como la etiqueta.
Este comando no elimina imágenes de un registro. Además, no puede eliminar una imagen de un contenedor en ejecución a menos que use la opción -f
como con el comando docker image rm
.
Ejemplo:
abhisheknair@geekflare:~$ docker rmi alpine Untagged: alpine:latest Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96 Deleted: sha256:d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83 Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf abhisheknair@geekflare:~$
También puede usar --no-prune
para especificar que no se eliminen los padres sin etiquetar.
Detener contenedor y eliminar imágenes
En muchas ocasiones, es posible que deba detener todos los contenedores y eliminar todas las imágenes asociadas. Puedes hacerlo simplemente con:
$ docker rm -vf $(docker ps -a -q)
El comando anterior detendrá y eliminará todos los contenedores en ejecución a la fuerza. Luego podemos proceder a eliminar las imágenes vinculadas usando:
$ docker rmi -f $(docker images -a -q)
Resumen
Docker es una herramienta versátil que es una parte esencial del arsenal de los ingenieros de DevOps de hoy en día y forma parte de otras tecnologías de moda como Kubernetes. La administración de imágenes de Docker es una de las partes esenciales de la administración y solución de problemas de una implementación de Docker.
Ahora debería tener una idea básica de las capacidades que ofrece el comando docker
CLI con sus comandos como image
, images
y rmi
. Sus banderas ofrecen una mayor personalización y ofrecen opciones avanzadas de filtrado y personalización que pueden ayudar en la automatización y el uso avanzado.
Use la ayuda de la docker [COMMAND] help
para obtener más detalles sobre las opciones disponibles y los temas de ayuda relacionados.