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 las 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 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 con 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ás 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 muestra anteriormente en este tutorial.

Eliminación de varias imágenes acoplables 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, deberá detener cualquier contenedor en ejecución asociado con las imágenes.

Elimine todas las imágenes acoplables 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.

A imagen de la ventana acoplable colgando “significa que ha creado 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 utilizar el opción de ciruela :

                      
                        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"
                      
                    

Elimine todas las imágenes de la ventana acoplable 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 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 los contenedores acoplables.

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

Related Posts