GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Guía completa para eliminar imágenes de Docker

Si continúa creando imágenes acoplables, pronto comenzará a quedarse sin espacio. La eliminación de imágenes acoplables antiguas y sin usar liberará mucho espacio en disco para usted.

En este artículo, analizaré varios escenarios de eliminación de imágenes acoplables de su sistema.

Formas de eliminar imágenes de la ventana acoplable

Primero, verifique las imágenes de la ventana acoplable presentes en su sistema con este comando:

docker images

La salida mostrará todas las imágenes de la ventana acoplable y su ID de imagen. Necesita este nombre de imagen (en la columna del repositorio) o la ID de la imagen para eliminar una imagen acoplable de su sistema.

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              67e34c1c9477        2 weeks ago         114MB
ubuntu              latest              775349758637        6 weeks ago         64.2MB

Con el ID de la imagen, puede eliminar la imagen de la ventana acoplable de la siguiente manera:

docker rmi image_name_or_id

También puede usar este comando ya que ambos son iguales:

docker image rm image_id

Así es como puede verse la salida:

[email protected]:~$ docker rmi 67e34c1c9477
Untagged: debian:latest
Untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
Deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
Deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb

Si usa la identificación de la imagen, eliminará todas las imágenes asociadas con esa identificación.

Eliminar la imagen de la ventana acoplable asociada a un contenedor

La vida hubiera sido mucho más simple si pudiera eliminar las imágenes de la ventana acoplable como esa. Pero eso no sucede a menudo.

Si tiene contenedores asociados con la imagen de la ventana acoplable, encontrará algunos errores cuando intente eliminar la imagen.

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (cannot be forced) - image is being used by running container 13dc0f4226dc

Primero debe detener el contenedor:

[email protected]:~$ docker stop 13dc0f4226dc
13dc0f4226dc

El problema es que incluso si detiene el contenedor, aún se quejará si intenta eliminar la imagen:

[email protected]:~$ docker rmi 67e34c1c9477
Error response from daemon: conflict: unable to delete 67e34c1c9477 (must be forced) - image is being used by stopped container 5ced86b1fcee

Tienes dos opciones aquí:

  • Forzar la eliminación de una imagen acoplable (el contenedor asociado permanecerá en el sistema)
  • Elimine el contenedor asociado y luego elimine la imagen de la ventana acoplable

Para forzar la eliminación de una imagen acoplable, puede usar la opción -f:

docker rmi -f image_id

Para eliminar un contenedor y luego eliminar la imagen, puede usar algo como esto:

docker rm container_id
docker rmi image_id

Eliminar la imagen de la ventana acoplable asociada a varios contenedores

La vida aún sería un poco más simple si una imagen acoplable estuviera asociada con un solo contenedor. Pero una imagen puede tener varios contenedores asociados y eliminar ese tipo de imagen de la ventana acoplable se convierte en una molestia.

Verá un error como este:

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (must be forced) - image is referenced in multiple repositories

Primero, debe encontrar todos los contenedores asociados con un nombre de imagen (no ID).

docker ps -a -q --filter ancestor=docker_image_name
  • -una opción muestra todos los contenedores en ejecución y detenidos.
  • La opción -q solo muestra el ID del contenedor.

Y luego tienes que detenerlos a todos. Puede usar los ID de los contenedores uno por uno, pero eso llevará demasiado tiempo. Puedes usar la magia de pipe y xargs para detener todos los contenedores asociados con una imagen:

docker ps -a -q --filter ancestor=ubuntu | xargs docker stop

Y luego puede eliminar los contenedores detenidos o forzar la eliminación de la imagen (como vio en la sección anterior).

Si desea eliminar todos los contenedores asociados con una imagen, simplemente ejecute este comando:

docker ps -a -q --filter ancestor=ubuntu | xargs docker rm

Y ahora puede eliminar la imagen de la ventana acoplable con el comando que se mostró anteriormente en este tutorial.

Eliminar varias imágenes de docker a la vez

También puede eliminar varias imágenes acoplables con un solo comando. Es lo mismo que el comando anterior. Solo tiene que especificar los ID de las imágenes o los nombres de las imágenes.

docker rmi image_id_1 image_id_2 image_id_3

Por supuesto, tendrá que detener cualquier contenedor en ejecución asociado con las imágenes.

Eliminar todas las imágenes de docker no utilizadas y colgantes a la vez

Antes de que veas eso, déjame explicarte lo que no se usa y las imágenes colgantes son:

Cualquier imagen acoplable que tenga cualquier tipo de contenedor asociado (detenido o en ejecución) es una imagen usada. Si una imagen acoplable no tiene contenedores asociados, se convierte en una imagen acoplable no utilizada.

Una imagen acoplable colgante “significa que creó la nueva versión de la imagen, pero no se le dio un nuevo nombre. Así que las viejas imágenes que tienes se convierten en la imagen pendiente. Esas imágenes antiguas son las que no están etiquetadas y muestran en su nombre cuando ejecuta el comando 'imágenes acoplables'".

Si desea eliminar las imágenes colgantes, puede usar la opción de podar:

docker image prune

Si desea eliminar las imágenes no utilizadas y las que cuelgan a la vez, puede usar podar con la opción -a:

docker image prune -a

Debería ver el espacio que libera al final de la salida:

[email protected]:~$ 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: ubuntu:latest
untagged: [email protected]:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
untagged: debian:latest
untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb
untagged: fedora:latest
untagged: [email protected]:d4f7df6b691d61af6cee7328f82f1d8afdef63bc38f58516858ae3045083924a
deleted: sha256:f0858ad3febdf45bb2e5501cb459affffacef081f79eaa436085c3b6d9bd46ca
deleted: sha256:2ae3cee18c8ef9e0d448649747dab81c4f1ca2714a8c4550eff49574cab262c9

Total reclaimed space: 308.3MB

Puede ser un poco inteligente con el comando podar y eliminar solo las imágenes antiguas no utilizadas y colgantes. Entonces, si desea eliminar los que tienen más de 24 horas, úselo así:

docker image prune -a --filter "until=24h"

Eliminar todas las imágenes de docker de su sistema

Tal vez esté en un entorno de prueba y desee comenzar de nuevo eliminando todas las imágenes de la ventana acoplable.

Para eliminar todas las imágenes de la ventana acoplable, primero debe detener todos los contenedores en ejecución.

docker ps -a -q | xargs docker rm

Ahora puedes eliminar todas las imágenes de esta manera:

docker images -a -q | xargs docker rmi -f

Eso es todo. Creo que es suficiente material de referencia para eliminar las imágenes de la ventana acoplable y ahora debería tener una mejor comprensión de este tema. También puede consultar el tutorial para eliminar contenedores docker.

Si tiene alguna pregunta o sugerencia, deje un comentario a continuación.


Docker
  1. Qué es un contenedor Docker:una guía introductoria para principiantes

  2. Cómo mover imágenes de Docker entre hosts

  3. Guía completa para principiantes sobre el registro de Docker

  4. Cómo modificar imágenes de Docker

  5. imagemagick para la optimización de imágenes

Mantenga sus imágenes de Docker manejables con Docker Image Prune

Cómo usar Docker Commit para cambiar imágenes de contenedores

Comandos de Docker para gestionar el ciclo de vida de los contenedores (guía definitiva)

Compartir imágenes de Docker en Docker Hub

Guía para principiantes del mundo Docker

Cómo listar/buscar/extraer imágenes de la ventana acoplable en Linux