Conforme vamos avanzando en el uso de Docker iremos acumulando imágenes en nuestro sistema. Estas imágenes, bien es cierto, no ocupan tanto espacio como una máquina virtual perom, si hemos descargado varias decenas o centenas de las mismas (basta un par docker pull -a para eso) nos encontraremos con una elevada tasa de ocupación de disco.
En este caso, para una mejor gestión, podemos eliminar imágenes con algunas de estas conjugaciones del comando docker:
# Borrado de la imagen
mysql:8.0.22 > docker rmi mysql:8.0.22 # Borrado de una imagen usando su IMAGE ID > docker rmi dd7265748b5d # Usando la orden docker image rm y el nombre > docker image rm mysq:8.0.22 #
Usando la orden docker image rm y el
IMAGE ID > docker image rm dd7265748b5d # Borrado de dos imágenes (o varias) a la vez. Puedes usar nombre e IMAGE ID > docker rmi mysql:8.0.22 mysql:5.7 |
Pero este borrado de imágenes, ¿va a ser siempre efectivo?. NO.
NO PODEMOS BORRAR UNA IMAGEN SI YA TENEMOS UN CONTENEDOR QUE ESTÁ USÁNDOLA.
No obstante, si lo intentamos no va a suceder nada, simplemente se nos mostrará un mensaje de error como el siguiente:
Error response from daemon: conflict: unable to remove repository reference "XXXX" (must force) - container 8d12ffafaaec is using its referenced image 417af7dc28bc |
Si aun así queremos borrarla podemos forzar ese borrado, lo cuál afectará, evidentemente, a los contenedores que tuviéramos referenciando esa imagen. Eso lo conseguimos añadiendo la opción -f o --force. Por ejemplo:
# Borra la imagen httpd (Apache
latest) aunque hubiera contenedores que
estuvieran usando esa imagen. > docker rmi -f httpd |
Este proceso de borrado, sobre todo si tenemos muchas imágenes, puede ser un proceso engorroso. Para facilitar esto disponemos de la orden docker image prune que tiene tres opciones básicas:
- -a o --all para borrar todas
las imágenes que no están siendo usadas por
contenedores
- -f o --force para que no nos solicite confirmación. Es una operación que puede borrar muchas imágenes de una tacada y debemos ser cuidadosos. Es recomendable no usar esta opción.
- --filter para especificar ciertos filtros a las imágenes.
Para demostrar su funcionamiento vamos a poner varios ejemplos:
# Borrar todas las imágenes sin
usar > docker image prune -a # Borrado de la imágenes creadas hace más de una semana 10 días > docker image prune --filter until="240h" |