Volver al inicio

Cómo usar Docker para principiantes: una guía práctica

Este completo tutorial de Docker enseña a los principiantes a contenerizar aplicaciones usando Docker. Cubre conceptos básicos, instalación, ejecución de contenedores, creación de imágenes personalizadas con Dockerfiles y gestión de aplicaciones multicontenedor con Docker Compose.

Docker para principiantes: conteneriza tu primera aplicación
Advertisement 728x90

Docker para Principiantes: Una Guía Práctica de Contenerización

Docker para Principiantes: Una Guía Práctica de Contenerización

Durante años, la frase "en mi máquina funciona" ha sido la pesadilla del desarrollo de software. Si eres desarrollador, administrador de sistemas o profesional de TI que busca entender cómo usar Docker para principiantes, has llegado al lugar indicado. Docker resuelve este problema ofreciendo una solución potente y ligera para empaquetar y ejecutar aplicaciones en entornos aislados llamados contenedores, garantizando que funcionen de manera consistente en cualquier lugar, desde tu portátil hasta la nube.

Qué Aprenderás

Al final de esta guía, comprenderás los conceptos fundamentales de Docker, ejecutarás tu primer contenedor, crearás una imagen personalizada y gestionarás aplicaciones multicontenedor usando Docker Compose. Te llevarás un proceso claro y repetible para contenerizar tus propias aplicaciones, lo que te permitirá optimizar tus flujos de desarrollo y despliegue.

Google AdInline article slot

¿Qué es Docker y por qué es importante?

Docker es una plataforma abierta diseñada para simplificar el proceso de construir, enviar y ejecutar aplicaciones. Lo logra permitiéndote separar tus aplicaciones de tu infraestructura, tratando tu software y sus dependencias como una unidad única y portátil.

Piensa en Docker como un sistema de contenedores de carga para software. Así como un contenedor de carga físico puede transportar cualquier mercancía y ser movido por un barco, tren o camión, un contenedor Docker puede albergar cualquier aplicación y sus dependencias y ejecutarla de manera consistente en cualquier sistema que tenga Docker instalado. Esta estandarización ha convertido a Docker en el estándar de facto para gestionar aplicaciones nativas de la nube, con su registro público, Docker Hub, alojando más de 14 millones de imágenes de aplicaciones y entregando más de 11 mil millones de descargas de imágenes al mes.

Beneficios Clave de Usar Docker

  • Portabilidad y Consistencia: Los contenedores se ejecutan en cualquier máquina con Docker (Linux, Windows, macOS) y eliminan los errores específicos del entorno.
  • Ligereza y Rapidez: A diferencia de las máquinas virtuales (VMs) tradicionales, los contenedores comparten el kernel del sistema operativo del host, lo que los hace mucho más pequeños (megabytes frente a gigabytes) y capaces de iniciarse en milisegundos.
  • Aislamiento y Eficiencia: Los contenedores están aislados entre sí y del sistema host, mejorando la seguridad y permitiendo ejecutar múltiples aplicaciones sin conflictos.
  • DevOps y CI/CD: Los contenedores son un pilar fundamental de los pipelines modernos de CI/CD, permitiendo pruebas y despliegues rápidos.

Comprendiendo Conceptos Clave: Imágenes y Contenedores

Antes de profundizar, es crucial entender la relación entre una imagen y un contenedor. Estos son los dos conceptos más fundamentales en Docker.

Google AdInline article slot
  • Imagen Docker: Una imagen es un paquete de software ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar un software: el código, un entorno de ejecución, herramientas del sistema, bibliotecas y configuraciones. Es una plantilla de solo lectura, similar a una instantánea o un plano. Por ejemplo, nginx:alpine es una imagen preconstruida para el servidor web NGINX.
  • Contenedor Docker: Un contenedor es una instancia ejecutable de una imagen. Puedes crear, iniciar, detener, mover o eliminar un contenedor usando la API o CLI de Docker. Es la imagen "en ejecución" en tu sistema.

Tus Primeros Pasos con Docker

1. Instalando Docker

Para empezar, necesitas instalar Docker. La forma más sencilla de hacerlo en Windows o macOS es descargar e instalar Docker Desktop desde el sitio web oficial de Docker. Incluye todo lo necesario: el motor Docker, la CLI y Compose. Para usuarios de Linux, puedes instalar el motor Docker usando el gestor de paquetes de tu distribución.

Una vez instalado, abre una terminal o símbolo del sistema y verifica la instalación:

docker --version

2. Ejecutando Tu Primer Contenedor

Ejecutemos un contenedor "Hola Mundo" para asegurarnos de que todo funciona. Este es el primer paso tradicional para entender cómo usar Docker para principiantes.

Google AdInline article slot
docker run hello-world

Este comando hace varias cosas: verifica si la imagen hello-world existe localmente, la descarga de Docker Hub si no es así, y luego crea y ejecuta un contenedor a partir de esa imagen. El contenedor imprime un mensaje de bienvenida y luego se detiene. Este flujo—verificar localmente, descargar de un registro y luego ejecutar—es el núcleo del trabajo con Docker.

3. Ejecutando un Servidor Web Real

Hagamos las cosas más interesantes ejecutando un servidor web real, NGINX, en segundo plano. Este comando introduce tres banderas esenciales:

docker run -d -p 8080:80 --name miservidorweb nginx
  • -d (Desacoplado): Ejecuta el contenedor en segundo plano.
  • -p 8080:80 (Publicar): Mapea el puerto 8080 de tu máquina host al puerto 80 dentro del contenedor. Ahora puedes acceder al servidor web en http://localhost:8080.
  • --name miservidorweb: Asigna un nombre amigable al contenedor en lugar de un ID aleatorio.

Ahora, abre tu navegador en http://localhost:8080. ¡Deberías ver la página de bienvenida de NGINX! Esto demuestra que un servidor web real se está ejecutando, aislado en un contenedor y accesible en tu máquina.

Construyendo Tu Propia Imagen Docker

Si bien ejecutar imágenes predefinidas es útil, el verdadero poder de Docker reside en empaquetar tus propias aplicaciones. Esto se hace usando un Dockerfile.

¿Qué es un Dockerfile?

Un Dockerfile es un archivo de texto simple que contiene un conjunto de instrucciones o comandos sobre cómo construir una imagen Docker. Actúa como una receta para crear un entorno portátil y autocontenido para tu aplicación.

Creando una Aplicación Node.js Simple

Creemos un Dockerfile simple para contenerizar una aplicación Node.js. Esto te dará una plantilla práctica que podrás adaptar para muchos proyectos.

  1. Crea una Carpeta de Proyecto:
    mkdir mi-app-node && cd mi-app-node
  2. Crea una Aplicación Simple: Crea un archivo llamado app.js.
    const http = require('http');
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('¡Hola, Mundo! ¡Mi aplicación se ejecuta en un contenedor!\n');
    });
    
    server.listen(3000, () => {
      console.log('Servidor ejecutándose en http://localhost:3000/');
    });
  3. Crea un package.json: Crea un archivo llamado package.json para declarar las dependencias de la aplicación.
    {
      "name": "mi-app-node",
      "version": "1.0.0",
      "main": "app.js"
    }

Escribiendo el Dockerfile

Ahora, crea un archivo llamado Dockerfile (sin extensión) en el mismo directorio con el siguiente contenido:

FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

Desglosemos cada comando:

  • FROM node:18-alpine: Inicializa la construcción desde una imagen base. Estamos usando la imagen oficial de Node.js versión 18 basada en Alpine Linux, una distribución Linux muy pequeña que hace que nuestra imagen sea mucho más ligera.
  • WORKDIR /app: Establece el directorio de trabajo para cualquier instrucción posterior RUN, CMD, COPY y ADD. Si el directorio no existe, se creará.
  • COPY package.json ./: Copia el archivo package.json desde tu directorio local al directorio de trabajo actual dentro de la imagen.
  • RUN npm install: Ejecuta el comando npm install dentro del contenedor para instalar todas las dependencias definidas en package.json.
  • COPY . .: Copia el resto del código fuente de tu aplicación desde tu directorio local al directorio de trabajo dentro de la imagen.
  • EXPOSE 3000: Informa a Docker que el contenedor escucha en el puerto 3000 en tiempo de ejecución.
  • CMD ["node", "app.js"]: Especifica el comando que se ejecutará cuando se inicie un contenedor a partir de esta imagen.

Construyendo y Ejecutando Tu Imagen

  1. Construye la Imagen: En tu terminal, ejecuta el comando docker build:

    docker build -t mi-app-node:1.0 .
    • -t mi-app-node:1.0: Etiqueta tu imagen con un nombre y una versión.
    • .: Indica a Docker que busque el Dockerfile en el directorio actual.
  2. Ejecuta el Contenedor: Ahora, ejecuta tu imagen recién creada, mapeando un puerto del host al puerto del contenedor:

    docker run -d -p 3000:3000 --name mi-app-ejecutandose mi-app-node:1.0

Navega a http://localhost:3000 en tu navegador y deberías ver el mensaje "¡Hola, Mundo!". Felicidades, ¡has construido y ejecutado con éxito tu propia imagen Docker personalizada!

Gestionando Aplicaciones Multicontenedor con Docker Compose

Las aplicaciones modernas rara vez son un solo servicio; a menudo incluyen un frontend web, una base de datos, una caché y más. Gestionar esto con múltiples comandos docker run puede volverse engorroso. Docker Compose es una herramienta que te permite definir y ejecutar aplicaciones multicontenedor en un solo archivo, compose.yaml (o docker-compose.yml).

Ejemplo: Una Aplicación Web con Redis

Aquí tienes un ejemplo de archivo compose.yaml que define un servicio web y un servicio de caché Redis:

services:
  web:
    image: nginx:alpine
    ports:
      - "8082:80"
  cache:
    image: redis:alpine

Este archivo define dos servicios:

  • web: Usa la imagen oficial nginx:alpine y mapea el puerto 8082 del host al puerto 80 dentro del contenedor.
  • cache: Usa la imagen oficial redis:alpine.

Para ejecutar ambos servicios, simplemente usa los siguientes comandos:

docker compose up -d
docker compose ps

Esto iniciará ambos contenedores juntos en una red dedicada, permitiéndoles comunicarse entre sí. Puedes detener y eliminar todo con docker compose down.

Fuentes

  1. Documentación de Docker. "Introducción."
  2. Documentación de Docker. "Resumen del taller de Docker."
  3. Documentación de Docker. "¿Qué es Docker?"
  4. Configuración de Docker para Principiantes en DevOps (GitHub)
  5. KodeKloud. "Tutorial de Docker para Principiantes en 2026: Primeros Pasos."
  6. Microsoft Learn. "Cuándo usar contenedores Docker."
  7. freeCodeCamp. "Cómo Contenerizar una Aplicación Node.js Usando Docker."
  8. Documentación de Docker. "Primeros pasos."
  9. Communications of the ACM. "Una Década de Contenedores Docker."
  10. Flatcar. "Primeros pasos con Docker."
  11. Manning Publications. "Aprende Docker en un Mes de Comidas."

— Editorial Team

Advertisement 728x90

Leer después