Mira la lección en vídeo
Accede al vídeo completo de esta lección y a más contenido exclusivo con el Plan Plus.
Desbloquear Plan PlusQué es una imagen Docker
Una imagen Docker es un paquete ligero, ejecutable e inmutable que contiene todo lo necesario para ejecutar una aplicación: el código, el runtime, las librerías del sistema, las herramientas y las configuraciones. Piensa en ella como una plantilla o molde a partir del cual se crean los contenedores.
A diferencia de las máquinas virtuales tradicionales que incluyen un sistema operativo completo, las imágenes Docker son extraordinariamente eficientes porque comparten el kernel del sistema operativo host. Esto significa que una imagen que podría ocupar varios gigabytes como VM, en Docker puede ocupar solo unos pocos megabytes.
Anatomía de una imagen Docker
Las imágenes Docker están construidas mediante un sistema de capas apiladas. Cada capa representa un cambio incremental respecto a la capa anterior, como la instalación de un paquete, la copia de archivos o la configuración de variables de entorno.
┌─────────────────────┐ ← Capa de aplicación (tu código)
├─────────────────────┤ ← Capa de dependencias (librerías)
├─────────────────────┤ ← Capa del runtime (Node.js, Python, etc.)
└─────────────────────┘ ← Capa base (Ubuntu, Alpine, etc.)
Esta arquitectura en capas aporta múltiples ventajas:
- Eficiencia de almacenamiento: Las capas comunes se comparten entre diferentes imágenes
- Velocidad de descarga: Solo se descargan las capas que no tengas localmente
- Versionado inteligente: Los cambios solo afectan a las capas superiores
- Reutilización: Una capa base puede servir para múltiples aplicaciones
Inmutabilidad y versionado
Un aspecto fundamental es que las imágenes son inmutables. Una vez creada una imagen con un tag específico, su contenido no puede modificarse. Si necesitas hacer cambios, debes crear una nueva versión de la imagen.
# Diferentes versiones de la misma imagen
nginx:1.25.3-alpine # Versión específica
nginx:1.25-alpine # Versión mayor
nginx:alpine # Etiqueta de distribución
nginx:latest # Última versión (por defecto)
Diferencia entre imagen y contenedor
Es crucial entender que imagen y contenedor son conceptos diferentes:
- Imagen: Es la plantilla estática e inmutable
- Contenedor: Es la instancia ejecutable de esa imagen
Usando una analogía culinaria: la imagen sería la receta de un plato, mientras que el contenedor sería el plato cocinado que puedes servir y consumir. Puedes crear múltiples contenedores (platos) a partir de la misma imagen (receta).
Registro de imágenes
Las imágenes se almacenan en registros (registries). El más conocido es Docker Hub, que actúa como un repositorio público donde desarrolladores y organizaciones publican sus imágenes. También existen registros privados para empresas que necesitan mantener sus imágenes de forma confidencial.
Cada imagen se identifica mediante un formato específico:
[registro]/[namespace]/[repositorio]:[tag]
Por ejemplo:
nginx:latest
→ Imagen oficial de Nginxmysql:8.0
→ MySQL versión 8.0postgres:15-alpine
→ PostgreSQL 15 con Alpine Linux
Este sistema de identificación permite gestionar versiones específicas de software de forma precisa y reproducible, garantizando que tu aplicación se ejecute exactamente con las mismas dependencias en cualquier entorno.
Descargar imágenes de Docker Hub y gestionarlas
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
Docker Hub es el registro público más utilizado para imágenes Docker, funcionando como una biblioteca gigante donde desarrolladores y empresas publican sus aplicaciones empaquetadas. Con millones de imágenes disponibles, desde bases de datos hasta servidores web, Docker Hub se convierte en tu primera parada para encontrar prácticamente cualquier software que necesites.
Explorar Docker Hub
Antes de descargar una imagen, es recomendable explorar Docker Hub a través de su interfaz web en hub.docker.com. Aquí puedes buscar imágenes, revisar su documentación, verificar las etiquetas disponibles y comprobar la frecuencia de actualizaciones.
Las imágenes oficiales se identifican con una etiqueta especial que garantiza que han sido revisadas por Docker Inc. Por ejemplo, nginx
, mysql
, y postgres
son imágenes oficiales mantenidas por sus respectivos equipos de desarrollo.
Descargar imágenes con docker pull
El comando docker pull
descarga imágenes desde Docker Hub (o cualquier otro registro) a tu sistema local. La sintaxis básica es:
docker pull [opciones] nombre[:tag]
Descarga de imágenes populares:
# Descargar la última versión de Nginx
docker pull nginx
# Descargar una versión específica de MySQL
docker pull mysql:8.0
# Descargar PostgreSQL con Alpine Linux
docker pull postgres:15-alpine
Cuando no especificas una etiqueta, Docker automáticamente usa latest
, que apunta a la versión más reciente de la imagen. Sin embargo, en entornos profesionales es recomendable especificar versiones exactas para garantizar la reproducibilidad.
Gestión local de imágenes
Una vez descargadas, las imágenes se almacenan localmente y puedes gestionarlas con varios comandos esenciales.
Ver imágenes disponibles:
# Listar todas las imágenes locales
docker images
# Formato más legible con tamaños
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
La salida mostrará información crucial como el repositorio, etiqueta, ID de imagen, fecha de creación y tamaño:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a6bd71f48f68 2 weeks ago 187MB
mysql 8.0 b9b7c61c6c72 3 weeks ago 496MB
postgres 15-alpine 8b4f3f2d5e91 1 month ago 238MB
Inspeccionar imágenes
Para obtener información detallada sobre una imagen específica:
# Inspeccionar configuración de la imagen
docker inspect nginx:latest
# Ver el historial de capas
docker history nginx:latest
El comando inspect
revela datos técnicos como variables de entorno, puertos expuestos, punto de entrada y configuración de volúmenes que la imagen tiene preconfigurados.
Filtrar y buscar imágenes
Docker proporciona opciones de filtrado para gestionar imágenes de forma más eficiente:
# Mostrar solo imágenes sin etiquetar (dangling)
docker images --filter "dangling=true"
# Filtrar por nombre de repositorio
docker images nginx
# Buscar imágenes que contengan cierto texto
docker images --filter "reference=*mysql*"
Eliminar imágenes
La gestión del espacio en disco es fundamental cuando trabajas con múltiples imágenes. Docker ofrece varios comandos para limpiar imágenes innecesarias:
Eliminar una imagen específica:
# Por nombre y etiqueta
docker rmi nginx:latest
# Por ID de imagen (primeros caracteres)
docker rmi a6bd71f48f68
Eliminar múltiples imágenes:
# Eliminar varias imágenes a la vez
docker rmi mysql:8.0 postgres:15-alpine
# Eliminar imágenes sin etiquetar
docker image prune
# Eliminar todas las imágenes no utilizadas
docker image prune -a
Gestión de espacio y limpieza
Las imágenes Docker pueden consumir espacio considerable con el tiempo. Implementa rutinas de limpieza regular:
Ver uso de espacio:
# Mostrar uso de espacio por tipo de objeto
docker system df
# Información detallada del uso
docker system df -v
Limpieza integral:
# Eliminar todo lo no utilizado (imágenes, contenedores, redes, volúmenes)
docker system prune -a
# Limpieza con confirmación de espacio a liberar
docker system prune -a --volumes
Trabajar con etiquetas específicas
En entornos profesionales, especificar versiones exactas es una práctica esencial para mantener la estabilidad:
# Descargar versiones específicas para diferentes propósitos
docker pull nginx:1.25.3-alpine # Producción estable
docker pull mysql:8.0.35 # Base de datos específica
docker pull postgres:15.4-alpine # Versión exacta con Alpine
Esta práctica te permite controlar exactamente qué software se ejecuta en cada entorno, evitando sorpresas por actualizaciones automáticas que podrían introducir cambios inesperados.
Verificación de integridad
Docker verifica automáticamente la integridad de las imágenes descargadas mediante checksums criptográficos. Si ves mensajes como "Digest: sha256:..." durante la descarga, significa que la imagen se ha verificado correctamente y no ha sido alterada.
La gestión eficiente de imágenes Docker es fundamental para mantener un entorno de desarrollo limpio y optimizado, especialmente cuando trabajas con múltiples proyectos que requieren diferentes versiones de las mismas tecnologías.
Aprendizajes de esta lección de Docker
- Comprender qué es una imagen Docker y su arquitectura en capas.
- Diferenciar entre imagen y contenedor en Docker.
- Aprender a descargar, listar, inspeccionar y eliminar imágenes Docker.
- Conocer la importancia del versionado y la gestión de etiquetas en imágenes.
- Implementar buenas prácticas para la gestión eficiente del espacio y la integridad de las imágenes.
Completa este curso de Docker y certifícate
Únete a nuestra plataforma de cursos de programación y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs