En Docker Hub hay cientos de miles de imágenes. En serio, literalmente… Entrar ahí sin brújula es como buscar una aguja en un pajar.
Pero cuando te metes en profundiadad, realmente el 90% del tiempo acabas usando las mismas 10 o 12 imágenes base. Son tus imagenes favoritas, con las que construimos casi todo.
En este artículo, veremos una la lista definitiva de imágenes imprescindibles. Si vas a trabajar con Docker, estas son las que tienes que necesitas conocer.
Los sistemas operativos base
Estas son las imágenes “vacías” sobre las que instalas tus cosas. Son el lienzo en blanco.
Alpine Linux (alpine)
La joya de la corona del mundo Docker. Una distribución Linux completa que ocupa… ¡5 MB! (Sí, has leído bien).
¿Para qué sirve?:
- Es la base estándar para producción. Si creas una aplicación en Go, Node o Python y quieres que la imagen final sea minúscula, empiezas
FROM alpine.
docker run -it alpine /bin/sh
No usa apt (como Ubuntu), usa apk.
Ubuntu / Debian (ubuntu, debian)
Los clásicos Ubuntu y Debian. Si vienes de usar Linux en escritorio o servidor, aquí te sentirás en casa.
¿Para qué sirve?:
- Para entornos de desarrollo o cuando necesitas compatibilidad absoluta con librerías
glibc. Son más pesadas (entre 30MB y 80MB), pero te ahorran peleas de compilación que a veces da Alpine.
BusyBox (busybox)
La navaja suiza de los sistemas embebidos. Es un solo ejecutable que contiene versiones “mini” de los comandos más usados de Unix (ls, cp, cat, ping…). Pesa 1.2 MB.
¿Para qué sirve?:
- Para Debugging. ¿Tu contenedor web no conecta con la base de datos? Lanzas un contenedor BusyBox en la misma red y haces un
pingo untelnetpara probar.
Scratch (scratch)
La imagen más minimalista posible: literalmente vacía. No tiene shell, no tiene librerías, no tiene nada. Pesa 0 bytes.
¿Para qué sirve?:
- Es el destino final de los binarios compilados estáticamente en Go o Rust. Compilas tu aplicación en una etapa anterior (Multi-stage build) y copias el ejecutable a
scratch. El resultado es una imagen que solo contiene tu programa y nada más.
Los Runtimes
Como desarrolladores, estas son las que usarás en tu día a día para ejecutar tu código.
Node.js (node)
Imprescindible para desarrollo web, tanto Backend como Frontend (para compilar React/Vue/Angular). Viene con node y npm (o yarn) preinstalados.
Variantes:
- Tienes
node:lts(Long Term Support),node:lts-alpine(la ligera).
Python (python)
Python listo para usar. Se acabó pelearse con instalar Python en Windows o ensuciar tu sistema con 4 versiones diferentes de pip.
Cuando uses Python en Docker, usa la variable de entorno PYTHONUNBUFFERED=1 para ver los logs en tiempo real.
.NET (mcr.microsoft.com/dotnet/sdk y aspnet)
El ecosistema de Microsoft ha abrazado Docker de forma espectacular. Si programas en C#, estas son tus imágenes (alojadas en el registro oficial de Microsoft, MCR, no en Docker Hub).
¿Para qué sirve?:
- La imagen
sdkcontiene todo el compilador y herramientas para construir tu aplicación. - La imagen
aspnet(oruntime) contiene solo lo necesario para ejecutarla en producción, siendo mucho más ligera. Es el ejemplo perfecto del patrón “Multi-stage build”.
Go (golang) / Rust (rust)
Los lenguajes compilados modernos. Especialmente populares en Docker porque generan binarios estáticos que acaban en imágenes scratch o alpine de pocos MB.
¿Para qué sirve?:
- La imagen
golangorustse usa casi siempre como etapa de compilación en un Multi-stage build, nunca como imagen final. Compilas en ella y copias el binario resultante a una imagen mínima.
El patrón golang:alpine → scratch es uno de los más usados para microservicios ultraligeros.
Servidores Web y Proxies
Nginx (nginx)
El servidor web más rápido y popular del mundo.
¿Para qué sirve?:
- Servir ficheros estáticos (HTML, JS, CSS) de tu web.
- Reverse Proxy: Ponerlo delante de tu aplicación (Node, .NET) para gestionar SSL, compresión Gzip y balanceo de carga.
Alpine: Su versión nginx:alpine es ridículamente eficiente.
Traefik (traefik)
Un proxy inverso moderno diseñado específicamente para microservicios y contenedores.
Escucha al Daemon de Docker. Si arrancas un contenedor nuevo, Traefik se da cuenta automáticamente y lo expone a internet, le genera un certificado SSL (Let’s Encrypt) y lo enruta. Sin reiniciar nada. Brujeria.
Bases de datos
PostgreSQL (postgres) / MariaDB (mariadb)
Bases de datos relacionales SQL. En lugar de instalar un servidor SQL y ensuciar tu registro de Windows, lanzas esto y en 2 segundos tienes una DB limpia. Cuando acabas, la borras.
Redis (redis)
Base de datos en memoria (caché). Muy usada para gestión de sesiones, colas de trabajos o caché rápida. Su configuración por defecto en Docker es perfecta para desarrollo.
MongoDB (mongo)
La base de datos NoSQL más popular. Imprescindible en stacks JavaScript/Node.js (el stack MEAN o MERN). Guarda los datos en documentos JSON, lo que la hace muy natural para APIs REST.
¿Para qué sirve?:
- Desarrollo local sin instalar nada. Levantas un
mongocon Docker Compose junto a tu API de Node y tienes el stack completo en segundos.
Elasticsearch (elasticsearch)
El motor de búsqueda y análisis de logs por excelencia. Base del stack ELK (Elasticsearch + Logstash + Kibana).
¿Para qué sirve?:
- Búsqueda full-text avanzada en aplicaciones.
- Centralizar y analizar logs de todos tus contenedores.
Es bastante hambrienta de RAM. En desarrollo, añade ES_JAVA_OPTS="-Xms512m -Xmx512m" para limitarla.
Herramientas de gestión
Portainer (portainer/portainer-ce)
Una Interfaz Gráfica (Web UI) para gestionar Docker. Si te cansa la terminal, Portainer te permite ver tus contenedores, logs, estadísticas de CPU/RAM y gestionar redes con clics. Visualmente es excelente para entender qué está pasando.
Watchtower (containrrr/watchtower)
La automatización llevada al extremo. Watchtower es un contenedor que vigila a tus otros contenedores.
¿Para qué sirve?:
- Cada cierto tiempo comprueba en Docker Hub si hay una versión más reciente de las imágenes que estás usando. Si la hay, detiene tu contenedor, descarga la nueva imagen y lo vuelve a arrancar con la misma configuración.
Self-Hosted
Gitea (gitea/gitea)
Tu propio GitHub self-hosted, ligero y rápido. Repositorios Git, pull requests, issues, actions… todo en una imagen que consume poquísimos recursos.
¿Para qué sirve?:
- Alojar código privado en tu servidor sin depender de GitHub ni pagar por repos privados. Es el self-hosted de referencia para equipos pequeños o uso personal.
Grafana (grafana/grafana) + Prometheus (prom/prometheus)
El stack de monitorización estándar. Prometheus recoge métricas de tus contenedores y servicios; Grafana las convierte en dashboards visuales.
¿Para qué sirve?:
- Saber en todo momento el estado de tu infraestructura: CPU, RAM, latencia, errores… Si ya tienes Portainer para gestionar contenedores, Grafana+Prometheus es el siguiente paso natural para monitorizar en serio.
Combínalos con cAdvisor para obtener métricas automáticas de todos tus contenedores Docker sin configuración extra.
WordPress (wordpress)
El CMS más usado del mundo. En lugar de instalar Apache, PHP y configurar todo a mano, descargas esta imagen, la conectas a una base de datos MySQL (con Docker Compose) y tienes un blog funcionando en 3 minutos.
En tu casa
Home Assistant (homeassistant/home-assistant)
El rey de la domótica Open Source. Instalarlo “a pelo” puede ser una pesadilla de dependencias de Python y librerías.
Con Docker, ejecutas un solo comando y tienes el centro de control inteligente de tu casa listo para usar y aislado del resto del sistema.
Nextcloud (nextcloud)
Tu propio Google Drive / iCloud privado.
¿Para qué sirve?:
- ¿Cansado de pagar suscripciones mensuales por almacenamiento en la nube? Nextcloud te permite tener tu propia nube privada para sincronizar archivos, fotos de tu móvil, contactos y calendarios. Todo alojado en tu propio disco duro, donde tú eres el único dueño de tus datos.
Pi-hole (pihole/pihole)
Un “agujero negro” para los anuncios en toda tu red local.
¿Para qué sirve?:
- Funciona como un servidor DNS privado. Cuando lo instalas, bloquea la publicidad y los rastreadores a nivel de red. Esto significa que los anuncios desaparecen de todos los dispositivos de tu casa (Smart TVs, móviles, tablets y PCs) sin tener que instalar ninguna extensión en los navegadores. Es pura magia.
Jellyfin (jellyfin/jellyfin) o Plex (plexinc/pms-docker)
Tu propio Netflix personal.
¿Para qué sirve?:
- Le indicas a este contenedor en qué volumen tienes descargadas tus películas y series. Él se encarga automáticamente de descargar las carátulas, las sinopsis, los subtítulos y de crear una interfaz preciosa (estilo Netflix) para que puedas reproducirlas desde la TV del salón, tu móvil o cualquier navegador.
Jellyfin es la alternativa 100% gratuita y de código abierto. Plex es más famoso, pero tiene funciones de pago. Ambas imágenes son espectaculares.
