Docker Images

Intermedio
Docker
Docker
Actualizado: 13/08/2025

¡Desbloquea el curso de Docker completo!

IA
Ejercicios
Certificado
Entrar

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 Plus

Qué 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 Nginx
  • mysql:8.0 → MySQL versión 8.0
  • postgres: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.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

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

⭐⭐⭐⭐⭐
4.9/5 valoración