Docker y Contenedores: Guía Completa para Principiantes
Docker ha revolucionado la forma en que desarrollamos, empaquetamos y desplegamos aplicaciones. Los contenedores permiten que tu aplicación funcione de manera consistente en cualquier entorno, desde tu máquina local hasta servidores de producción. Esta guía te enseñará todo lo necesario para comenzar con Docker.
¿Qué es Docker?
Docker es una plataforma de código abierto que permite crear, desplegar y ejecutar aplicaciones usando contenedores. Los contenedores empaquetan una aplicación con todas sus dependencias, garantizando que funcione de manera uniforme en cualquier entorno.
Ventajas de los Contenedores
- Consistencia: Funciona igual en desarrollo, pruebas y producción
- Aislamiento: Cada contenedor es independiente
- Portabilidad: Ejecuta en cualquier sistema que soporte Docker
- Eficiencia: Menor uso de recursos que máquinas virtuales
- Escalabilidad: Fácil de escalar horizontalmente
Conceptos Fundamentales
Imagen: Plantilla de solo lectura para crear contenedores. Contiene el código de la aplicación, runtime, bibliotecas y herramientas.
Contenedor: Instancia ejecutable de una imagen. Es un entorno aislado donde corre tu aplicación.
Dockerfile: Archivo de texto con instrucciones para construir una imagen.
Docker Compose: Herramienta para definir y ejecutar aplicaciones multi-contenedor.
Instalación de Docker
Para instalar Docker en diferentes sistemas:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io
# macOS (usando Homebrew)
brew install docker
# Windows
# Descargar Docker Desktop desde docker.com
Tu Primer Dockerfile
Un Dockerfile básico para una aplicación Node.js:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Comandos Docker Esenciales
# Construir una imagen
docker build -t mi-app .
# Ejecutar un contenedor
docker run -p 3000:3000 mi-app
# Ver contenedores en ejecución
docker ps
# Ver todas las imágenes
docker images
# Detener un contenedor
docker stop <container-id>
# Eliminar un contenedor
docker rm <container-id>
Docker Compose
Para aplicaciones con múltiples servicios, usa Docker Compose:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
database:
image: postgres:14
environment:
POSTGRES_PASSWORD: password
Mejores Prácticas
- Usa imágenes base oficiales y ligeras (Alpine Linux)
- Minimiza el número de capas en tu Dockerfile
- Usa .dockerignore para excluir archivos innecesarios
- No ejecutes procesos como root dentro del contenedor
- Etiqueta tus imágenes con versiones específicas
Conclusión
Docker simplifica significativamente el desarrollo y despliegue de aplicaciones. Comienza con contenedores simples y gradualmente avanza hacia arquitecturas más complejas. La práctica constante te ayudará a dominar esta herramienta esencial del desarrollo moderno.