Las imágenes son el pilar fundamental de Docker. Saber cómo encontrarlas, descargarlas, examinarlas y limpiarlas es esencial para un flujo de trabajo eficiente.
Aunque la forma más común de encontrar imágenes es navegando por el sitio web de Docker Hub, también puedes hacer una búsqueda rápida desde la terminal con el comando `docker search`.
Por ejemplo, si buscamos una imagen de la base de datos `mysql`:
docker search mysql
Este comando devuelve una lista de repositorios que coinciden con el término de búsqueda, junto con una descripción, el número de estrellas (popularidad) y si es una imagen oficial. Las imágenes oficiales son mantenidas y verificadas por Docker y suelen ser la opción más segura y estable.
Cuando ejecutas `docker run` con una imagen que no tienes localmente, Docker la descarga automáticamente. Sin embargo, a veces quieres tener la imagen disponible de antemano. Para eso se usa `docker pull`.
docker pull mysql
Por defecto, si no especificas una etiqueta (tag), Docker descarga la versión etiquetada como `latest`. Esto suele ser la última versión estable de la imagen.
Una misma imagen puede tener múltiples versiones. Estas versiones se gestionan mediante etiquetas. El formato es `nombre_imagen:etiqueta`.
Por ejemplo, para descargar una versión específica de Nginx, como la 1.25:
docker pull nginx:1.25
Para descargar la versión más reciente basada en Alpine (que es más ligera):
docker pull nginx:alpine
Usar etiquetas explícitas en lugar de `latest` es una buena práctica, ya que garantiza que siempre estés usando la misma versión de la imagen, evitando sorpresas si la etiqueta `latest` se actualiza.
Para ver todas las imágenes que tienes descargadas en tu sistema, usa el comando `docker images`.
docker images
Mostrará una tabla con el nombre del repositorio, la etiqueta, el ID de la imagen, cuándo fue creada y su tamaño.
Si quieres conocer todos los detalles de una imagen (sus capas, las variables de entorno que define, el comando por defecto que ejecuta, etc.), puedes usar `docker inspect`.
docker inspect nginx:1.25
La salida es un objeto JSON muy extenso con toda la metadata de la imagen. Es especialmente útil para depurar o para entender cómo está construida una imagen que no creaste tú.
Con el tiempo, acumularás muchas imágenes que ya no necesitas, ocupando un valioso espacio en disco.
Para eliminar una o más imágenes, se usa `docker rmi` (remove image) seguido de los nombres o IDs de las imágenes.
docker rmi hello-world
Importante: No puedes eliminar una imagen si hay un contenedor (incluso detenido) que la esté usando. Primero debes eliminar el contenedor con `docker rm` y luego la imagen. Si quieres forzar la eliminación, puedes usar el flag `-f`.
Docker a menudo crea imágenes intermedias durante los `builds` o deja imágenes "colgando" (dangling images), que son capas que ya no están asociadas a ninguna imagen etiquetada. `docker image prune` es el comando para limpiarlas.
# Elimina todas las imágenes colgando
docker image prune
# Elimina todas las imágenes que no están siendo usadas por ningún contenedor
docker image prune -a
El comando te pedirá confirmación antes de borrar nada. Es una forma segura y rápida de liberar espacio en disco.