Eliminar una imagen por ID utilizando la opción forzada
En este paso, aprenderemos cómo eliminar una imagen de Docker utilizando su ID de imagen y, específicamente, cómo utilizar la opción forzada (-f
o --force
) cuando sea necesario. Eliminar por ID es útil cuando quieres ser preciso sobre qué imagen estás eliminando, especialmente si múltiples etiquetas (tags) apuntan a la misma imagen.
Primero, descarguemos una imagen que luego podamos eliminar por ID. Utilizaremos la imagen ubuntu
. Si ya la tienes, la descarga será rápida.
docker pull ubuntu
Ahora, listemos las imágenes para obtener el ID de imagen de la imagen ubuntu
.
docker images
Encuentra la imagen ubuntu
en la salida y anota su IMAGE ID
. Será una larga cadena de caracteres hexadecimales. Solo necesitas los primeros caracteres (generalmente 3 o más) para identificar de forma única la imagen.
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 270000000000 2 weeks ago 77.8MB
Intentemos eliminar la imagen utilizando su ID sin la opción forzada primero. Reemplaza YOUR_IMAGE_ID
con el ID de imagen real que anotaste de la salida de docker images
.
docker rmi YOUR_IMAGE_ID
Si la imagen no está siendo utilizada por ningún contenedor en ejecución o detenido, este comando probablemente tendrá éxito y eliminará la imagen. Sin embargo, si hay un contenedor basado en esta imagen, recibirás un mensaje de error que indica que la imagen está siendo utilizada por un contenedor y no se puede eliminar.
Para demostrar el uso de la opción forzada, primero ejecutemos un contenedor basado en la imagen ubuntu
.
docker run -d ubuntu sleep 3600
Este comando ejecuta un contenedor Ubuntu en modo desatendido (-d
) y lo mantiene en ejecución durante una hora (sleep 3600
).
Ahora, intenta eliminar la imagen ubuntu
por su ID nuevamente sin la opción forzada.
docker rmi YOUR_IMAGE_ID
Deberías recibir un mensaje de error similar a este:
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - image is referenced by one or more containers: 000000000000 (created ...)
Este error se produce porque un contenedor está utilizando la imagen. Para eliminar una imagen que está siendo utilizada por un contenedor, debes utilizar la opción forzada (-f
).
Ahora, eliminemos la imagen utilizando su ID con la opción forzada. Reemplaza YOUR_IMAGE_ID
con el ID de imagen real.
docker rmi -f YOUR_IMAGE_ID
La opción forzada le dice a Docker que elimine la imagen incluso si está siendo utilizada por un contenedor. Docker detendrá y eliminará primero cualquier contenedor que esté utilizando la imagen y luego eliminará la imagen en sí. La salida mostrará que la imagen y sus capas se han eliminado.
Untagged: ubuntu:latest
Deleted: sha256:2700000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (más líneas de Deleted)
Listemos las imágenes nuevamente para confirmar que la imagen ubuntu
ha desaparecido.
docker images
La imagen ubuntu
ya no debería estar en la lista.
Debes utilizar la opción forzada con cautela, ya que detendrá y eliminará contenedores sin confirmación adicional.