El ciclo de vida de una imagen en Docker abarca las operaciones necesarias para obtener, auditar y eliminar estas plantillas inmutables.
Hasta ahora, Docker ha sido muy amable con nosotros. Cuando ejecutamos docker run hello-world, él solo se encargó de buscar la imagen, descargarla y ejecutarla.
Esto está muy bien, pero para mantener nuestra máquina limpia también necesitamos saber cómo gestionar y controlar las imágenes qué descargamos y qué mantenemos en nuestro disco duro.
| Comando | Descripción |
|---|---|
docker pull <nombre_imagen> | Descarga una imagen desde un repositorio (Docker Hub). |
docker images | Lista todas las imágenes locales. |
docker rmi <imagen_id> | Elimina una o más imágenes. |
docker tag <imagen_id> <nuevo_nombre> | Etiqueta una imagen con un nuevo nombre. |
docker save -o <archivo.tar> <nombre_imagen> | Guarda una imagen en un archivo tar. |
docker load -i <archivo.tar> | Carga una imagen desde un archivo tar. |
Playground
Aquí puedes jugar con los distintos comandos y ver su efecto, sin miedo a llenar el disco duro de tu ordenador 😉
Ahora veremos los comandos principales en profundidad: Descargar (pull), Listar (images) y Borrar (rmi) 👇.
Descargar imágenes (docker pull)
Aunque docker run descarga la imagen si no la tiene, a veces queremos descargarla antes de ejecutarla.
¿Por qué querríamos hacer esto?
- Para adelantar tiempo (pre-fetching) antes de una demo o despliegue.
- Para asegurarnos de tener la última versión actualizada.
El comando es sencillo:
docker pull <nombre_imagen>:<tag>
Por ejemplo, para bajarnos la última versión de Ubuntu:
docker pull ubuntu
O si queremos una versión específica (algo vital en producción), usamos el tag:
docker pull python:3.9-alpine
Si no especificas el tag (lo que va después de los dos puntos), Docker asume por defecto que quieres la etiqueta docker pull ubuntu es igual a docker pull ubuntu:latest.
Listar imágenes (docker images)
Bien, nos hemos bajado cosas. ¿Pero qué tengo exactamente en mi ordenador ocupando espacio? Para ver tu “inventario” local, usamos:
docker images
También puedes usar la sintaxis más moderna docker image ls
Verás una tabla como esta:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 months ago 141MB
ubuntu 20.04 d5ca7a445605 5 months ago 72.8MB
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
- REPOSITORY: El nombre de la imagen (ej: nginx).
- TAG: La versión específica (ej: latest, 20.04).
- IMAGE ID: El ID único de esa imagen. Es un hash (SHA256) acortado. Nos servirá para referirnos a ella inequívocamente.
- SIZE: Cuánto ocupa en tu disco.
Borrar imágenes (docker rmi)
Llegamos al punto crítico. Has estado probando cosas y ahora tienes 15GB de imágenes que no usas. Toca limpiar.
El comando para borrar una imagen es docker rmi (ReMove Image).
Regla mnemotécnica:
rm= Remove (para contenedores).rmi= Remove Image (para imágenes).
Podemos borrar por nombre o por ID:
docker rmi nginx
# O usando el ID
docker rmi 605c77e624dd
Limpieza general (prune)
A veces tenemos decenas de imágenes viejas, versiones dangling (que aparecen como <none>) y basura digital. Ir una a una es un peñazo.
Docker tiene un comando para “tirar la basura”:
docker image prune
Esto borrará todas las imágenes “colgantes” (aquellas que no tienen nombre ni tag y no sirven para nada).
Si te sientes valiente y quieres borrar TODAS las imágenes que no estén siendo usadas por un contenedor activo en este momento (cuidado, que es posible que borres cosas que quizás querías guardar):
docker image prune -a
