Docker
Plataforma de contenedores que empaqueta aplicaciones con todas sus dependencias en unidades portables y consistentes que se ejecutan igual en cualquier entorno.
seed#docker#containers#devops#packaging#portability#images
¿Qué es?
Docker es una plataforma que permite empaquetar aplicaciones en contenedores — unidades ligeras que incluyen el código, runtime, bibliotecas y configuración necesarios para ejecutarse. Un contenedor se ejecuta igual en tu laptop, en CI/CD y en producción.
Conceptos clave
| Concepto | Función | Ejemplo |
|---|---|---|
| Image | Plantilla inmutable con el sistema de archivos | node:22-alpine, imagen custom |
| Container | Instancia en ejecución de una imagen | docker run my-app |
| Dockerfile | Receta para construir una imagen | FROM, COPY, RUN, CMD |
| Registry | Repositorio de imágenes | Docker Hub, ECR, GHCR |
| Volume | Almacenamiento persistente fuera del contenedor | Datos de base de datos, uploads |
Dockerfile básico
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Docker vs VMs
| Aspecto | Docker | VM |
|---|---|---|
| Overhead | Mínimo (comparte kernel) | Alto (OS completo) |
| Startup | Segundos | Minutos |
| Tamaño | MBs | GBs |
| Aislamiento | Proceso | Hardware |
Mejores prácticas
- Usar imágenes base oficiales y mínimas (alpine)
- Multi-stage builds para imágenes pequeñas
- No correr como root
- Un proceso por contenedor
- .dockerignore para excluir archivos innecesarios
¿Por qué importa?
Docker estandarizó el empaquetado de aplicaciones. Un contenedor funciona igual en desarrollo, CI y producción. Esta consistencia eliminó una categoría entera de bugs de entorno y habilitó prácticas como CI/CD, microservicios e infraestructura inmutable.
Referencias
- Docker Documentation — Documentación oficial.
- Dockerfile Best Practices — Guía oficial.
- Docker Overview — Docker, 2024. Documentación oficial de Docker.