Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

¿Cómo enumerar y eliminar la imagen de Docker?

seguridad docker
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Docker es una plataforma conocida que le permite administrar la ejecución 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 listar Docker imágenes y obtener la información requerida y luego aprovechar ese aprendizaje para eliminar una o más imágenes de manera eficiente.

Así que empecemos.

Listing Docker Images

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:~$

Como las otras docker comandos, es compatible images comando con múltiples opciones.

 $ docker images [OPTIONS] [REPOSITORY[:TAG]]

Si tu corres 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 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 usabilidad, 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 que ocupa la imagen y todas sus imágenes principales. Si guarda el contenido de la imagen como un archivo Tar cuando abre la ventana acoplable save una imagen, será igual al tamaño indicado.

Una imagen aparece en la lista varias veces si tiene varios nombres de repositorio o etiquetas, aunque la imagen única identificada por su IMAGE ID usa el SIZE enumerados solo una vez.

Lista de 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:~$

Lista de 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:~$

Enumere los ID de imagen completos

Para enumerar todas las imágenes sin truncar el IMAGE ID, Use:

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 direccionable de contenido conocido como digest. Para enumerar los valores de resumen de la imagen, use --digest marcar 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 una 2.0 registro, puede utilizar estos resúmenes con push, pull, create, run y rmi comandos. Esto también funciona con FROM comando en un Dockerfile.

Filtrar la salida

docker El comando admite el filtrado con images mediante el uso --filter bandera. Los filtros admitidos actualmente son:

  • colgando (booleano - verdadero o falso)
  • etiqueta (label=<key> or label=<key>=<value>)
  • antes de (<image-name>[:<tag>]<image id> or <image@digest>): Filtra las imágenes creadas antes de la identificación o las referencias dadas
  • ya que (<image-name>[:<tag>]<image id> or <image@digest>) - filtrar imágenes creadas desde la identificación o referencias dadas
  • referencia (patrón de una referencia de imagen): filtra las imágenes cuya referencia coincide 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:~$

Formatear la salida

docker images admite la salida de formato que puede ser necesaria para anidar con otros comandos, secuencias de comandos o de otro modo. Estos son los marcadores de posición admitidos para --format bandera:

marcador de posición Descripción
.ID ID de imagen
.Repository Repositorio de imágenes
.Tag Etiqueta de imagen
.Digest Resumen de imágenes
.CreatedSince Tiempo transcurrido desde que se creó la imagen
.CreatedAt El momento 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 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 un 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:~$

Removing Docker Images

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 espacio:

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:~$

Fuerza de eliminación

Es posible que haya contenedores en ejecución que utilicen las imágenes que está intentando eliminar. En tales casos, Docker le emitirá una advertencia cuando intente eliminar una imagen referenciada.

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:~$

Primero puede detener el contenedor asociado y luego volver a intentarlo o usar -f bandera 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:~$

Podar imágenes

Hay ciertas situaciones en las que las imágenes no utilizadas consumen espacio en el disco o simplemente necesita una limpieza de las viejas imágenes colgantes. Puede limpiar esas imágenes no utilizadas utilizando:

$ 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 se utilizan en ningún contenedor, utilice -a bandera:

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 puedes usar --force or -f bandera para proceder a limpiar sin confirmación ni uso --filter marca para proporcionar valores de filtro (por ejemplo, 'hasta = ') al prune mando.

Ejemplo:

$ docker image prune -a --force --filter "until=2021-01-04T00:00:00"

Or

$ docker image prune --filter="label=deprecated"

Usando el comando rmi

También puedes usar rmi comando con Docker para eliminar imágenes.

Elimina (y des-etiqueta) una o más imágenes del nodo Docker. Si una imagen tiene varias etiquetas, el uso de este comando con la etiqueta como parámetro solo elimina la etiqueta. Si la etiqueta es la única para la imagen, tanto la imagen como la etiqueta se eliminan.

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 utilice el -f opción como con docker image rm mando.

Ejemplo:

abhisheknair@geekflare:~$ docker rmi alpine
Untagged: alpine:latest
Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96
Deleted: sha256:d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83
Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf
abhisheknair@geekflare:~$

También puedes 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. Puede hacerlo simplemente con:

$ docker rm -vf $(docker ps -a -q)

El comando anterior detendrá y eliminará todos los contenedores en ejecución con fuerza. Luego podemos proceder a eliminar las imágenes vinculadas usando:

$ docker rmi -f $(docker images -a -q)

Summary

Docker es una herramienta versátil que es una parte esencial del arsenal de ingenieros de DevOps de hoy y es parte de otras tecnologías en boga como Kubernetes. La administración de imágenes de Docker es una de las partes esenciales de la administración y la resolución de problemas de una implementación de Docker.

Ahora debería tener una idea básica de las capacidades que docker CLI comando ofrece 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.

Utilice la herramienta docker [COMMAND] help para obtener más detalles sobre las opciones disponibles y los temas de ayuda relacionados.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre DevOps
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder