certmundo.
es‑mx

6 min de lectura

¿Qué es una imagen de Docker y cómo se usa?

Una imagen de Docker es una plantilla de solo lectura que contiene todo lo necesario para ejecutar una aplicación: código, dependencias y configuración.

La diferencia entre tener el molde y tener el pastel

Imagina que trabajas en el área de tecnología de Liverpool. Tu equipo necesita desplegar la misma aplicación web en cinco servidores distintos. Sin Docker, instalarías manualmente cada dependencia en cada servidor. Con una imagen de Docker, usas un solo molde para crear cinco instancias idénticas en minutos.

Aquí está la distinción más importante de esta lección: una imagen es el molde, y un contenedor es el objeto que fabricas con ese molde. Puedes crear cien contenedores a partir de una sola imagen. Todos arrancan exactamente igual.

La imagen no cambia cuando el contenedor corre. Es inmutable. El contenedor sí puede cambiar durante su ejecución, pero la imagen queda intacta.

El sistema MOLDE-INSTANCIA

Para entender imágenes y contenedores de forma permanente, usa el sistema MOLDE-INSTANCIA:

  • MOLDE = imagen de Docker. Se construye una vez, se reutiliza siempre.
  • INSTANCIA = contenedor. Nace de la imagen, vive, y puede detenerse o eliminarse.

Piénsalo como una receta de Bimbo para hacer pan de caja. La receta (imagen) no desaparece cuando horneas un pan (contenedor). Puedes hornear mil panes con la misma receta. Si uno sale mal, tiras ese pan, no la receta.

Este sistema tiene tres ventajas concretas:

  1. Consistencia: todos los contenedores creados desde la misma imagen son idénticos.
  2. Velocidad: crear un contenedor desde una imagen tarda segundos, no minutos.
  3. Portabilidad: la imagen funciona igual en tu laptop, en un servidor de FEMSA o en la nube.

¿Qué contiene una imagen por dentro?

Una imagen de Docker está formada por capas. Cada capa agrega algo sobre la anterior. Es como construir una torta: primero el pan, luego el jamón, luego el queso.

Por ejemplo, una imagen de Node.js típica tiene estas capas:

  1. Sistema operativo base (como Debian o Alpine Linux)
  2. Runtime de Node.js instalado
  3. Dependencias de tu aplicación (npm install)
  4. El código fuente de tu app

Cada vez que construyes una nueva versión de tu imagen, Docker solo reconstruye las capas que cambiaron. Esto hace las actualizaciones muy rápidas.

Docker Hub: el repositorio de imágenes

Docker Hub es la tienda oficial de imágenes de Docker. Es gratuita para imágenes públicas. Vive en hub.docker.com.

Puedes buscar imágenes directamente desde la terminal con este comando:

docker search nginx

Verás una lista así:

NAME                  DESCRIPTION                     STARS
nginx                 Official build of Nginx.        19000
bitnami/nginx         Bitnami Nginx Docker Image      180
jc21/nginx-proxy-...  Docker powered web proxy        3500

Las imágenes con la etiqueta OFFICIAL son mantenidas directamente por los creadores del software o por Docker. Siempre prefiere las imágenes oficiales cuando empieces a aprender.

Descargar una imagen sin ejecutarla

A veces necesitas descargar una imagen para usarla después, sin crear un contenedor todavía. El comando es:

docker pull nginx

Verás una salida como esta:

Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
Digest: sha256:abc123...
Status: Downloaded newer image for nginx:latest

Cada línea con "Pull complete" es una capa de la imagen descargándose. Una vez descargada, la imagen vive en tu máquina local.

Para ver todas las imágenes que tienes descargadas:

docker images

Salida esperada:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    a99a39d070bf   2 weeks ago    142MB

Ejecutar un contenedor desde una imagen

Ahora viene la parte práctica. Vamos a levantar un servidor web Nginx con un solo comando:

docker run -d -p 8080:80 --name mi-servidor nginx

Desglosamos cada parte:

  • docker run: crea y arranca un contenedor
  • -d: modo "detached", corre en segundo plano
  • -p 8080:80: mapea el puerto 8080 de tu máquina al puerto 80 del contenedor
  • --name mi-servidor: le da un nombre fácil de recordar al contenedor
  • nginx: el nombre de la imagen que usará

Ahora abre tu navegador y visita http://localhost:8080. Deberías ver la página de bienvenida de Nginx. Levantaste un servidor web completo en menos de 10 segundos.

Tres ejemplos que puedes copiar ahora mismo

Ejemplo 1: Servidor web para un proyecto de e-commerce

Supón que desarrollas el catálogo de productos de una tienda similar a Mercado Libre. Necesitas un servidor web para pruebas locales:

docker run -d -p 3000:80 --name catalogo-local nginx

Visita http://localhost:3000 y tienes tu entorno listo.

Ejemplo 2: Base de datos MySQL para desarrollo

Tu equipo necesita una base de datos temporal para probar reportes de ventas:

docker run -d \
  -p 3306:3306 \
  --name db-ventas \
  -e MYSQL_ROOT_PASSWORD=mipassword \
  mysql:8.0

En segundos tienes MySQL 8.0 corriendo localmente. Sin instaladores, sin configuraciones largas.

Ejemplo 3: Aplicación Python simple

Tienes un script de Python que procesa nóminas de empleados. Quieres correrlo sin instalar Python en tu máquina:

docker run --rm python:3.11 python -c "print('Nómina procesada correctamente')"

El flag --rm elimina el contenedor automáticamente al terminar. Perfecto para tareas de una sola vez.

Errores comunes al usar imágenes

Error 1: Confundir imagen con contenedor

Muchos principiantes intentan "eliminar una imagen" cuando en realidad quieren eliminar un contenedor. Si corres docker rmi nginx pero tienes contenedores activos usando esa imagen, Docker te dará error. Primero detén y elimina el contenedor, luego borra la imagen.

docker stop mi-servidor
docker rm mi-servidor
docker rmi nginx

Error 2: No especificar la versión (tag) de la imagen

Cuando escribes solo nginx, Docker descarga la versión latest. En producción esto es peligroso porque latest cambia con el tiempo. Siempre especifica la versión en proyectos reales:

docker pull nginx:1.25

Así tu equipo de desarrollo y el servidor de producción usan exactamente la misma versión.

Error 3: Descargar imágenes no oficiales sin verificar

Docker Hub tiene millones de imágenes públicas. Algunas son de terceros no verificados. Antes de usar una imagen desconocida, revisa cuántas descargas tiene, si tiene el badge de "Docker Official Image" y cuándo fue la última actualización. Usa imágenes con más de 1 millón de descargas o el sello oficial.

Cómo ver los detalles de una imagen

Puedes inspeccionar una imagen para ver su configuración interna:

docker inspect nginx

Este comando muestra un JSON con toda la información: capas, variables de entorno, puertos expuestos y más. Al principio se ve intimidante, pero con el tiempo aprenderás a leer la información que necesitas.

También puedes ver el historial de capas con:

docker history nginx

Verás cada capa con su tamaño y el comando que la creó. Esto te ayuda a entender cómo está construida la imagen.

Tu flujo de trabajo con imágenes

Sigue este flujo cada vez que necesites usar una imagen nueva:

  1. Busca la imagen en Docker Hub o con docker search
  2. Verifica que sea oficial o tenga buena reputación
  3. Descarga con docker pull nombre:version
  4. Confirma la descarga con docker images
  5. Ejecuta un contenedor con docker run
  6. Verifica que el contenedor corre con docker ps

Este flujo de seis pasos aplica igual si desarrollas en tu laptop en Ciudad de México o si despliegas en un servidor en Monterrey.

Una imagen de Docker es la garantía de que tu aplicación corre igual en cualquier lugar: la consistencia que todo equipo de desarrollo necesita.

Puntos clave

  • Una imagen de Docker es un molde inmutable; el contenedor es la instancia que creas a partir de ese molde. Nunca se confunden si recuerdas el sistema MOLDE-INSTANCIA.
  • Usa `docker pull nombre:version` para descargar imágenes y siempre especifica la versión exacta (como `nginx:1.25`) para evitar sorpresas en producción.
  • Docker Hub es el repositorio oficial de imágenes. Prefiere siempre las imágenes con el badge de "Docker Official Image" o más de 1 millón de descargas.
  • El comando `docker run -d -p puertoLocal:puertoContenedor nombre` crea y arranca un contenedor en segundo plano con un solo paso.
  • Para eliminar una imagen primero debes detener y borrar todos los contenedores que la usan; Docker no te dejará borrar una imagen en uso.

Comparte esta lección: