Contenedores
Qué es
Piensa en un de carga marítima: lo que sea que empaques adentro viaja como una sola unidad sellada y llega igual a cualquier puerto. Un contenedor de software funciona de la misma manera: empaqueta tu aplicación junto con todo lo que necesita para funcionar (código, bibliotecas, herramientas del sistema) en un portátil único. Ese paquete se ejecuta de la misma forma en tu laptop, en un servidor de pruebas o en la nube, lo que elimina el clásico problema de "en mi máquina funciona". Docker es la herramienta más común para construirlos.
Fortalezas
- Entorno consistente en todas partes: se construye una vez y se ejecuta en cualquier lugar.
- Control total sobre el entorno de ejecución, los paquetes del sistema operativo y las dependencias.
- Sin arranques en frío una vez que está corriendo; bueno para tráfico constante.
- Portable entre proveedores de nube, lo que evita una forzosa de un solo proveedor.
- Soporta cualquier lenguaje o , incluidos los procesos de larga duración.
Compensaciones
- Tienes que gestionar más cosas: imágenes base, actualizaciones y dimensionamiento de recursos.
- El escalado no es automático a menos que agregues un orquestador (como Kubernetes), lo cual añade una complejidad real.
- Un contenedor en ejecución cuesta dinero incluso cuando está inactivo.
- Las imágenes más grandes significan compilaciones y despliegues más lentos.
- Aplicar parches de seguridad a la imagen es tu responsabilidad.
Cuándo usarlo
Elige contenedores cuando necesites un entorno consistente y totalmente controlado: aplicaciones con dependencias de sistema específicas, servicios de larga duración, procesos en segundo plano (background workers), o cualquier cosa que supere los límites de las funciones y .
Encaje con la programación asistida por IA (vibe coding)
Los contenedores son un objetivo sólido para dirigir con IA porque un Dockerfile es solo una receta, y los agentes son buenos escribiendo recetas. Puedes hacer que la IA genere el Dockerfile, un .dockerignore y los comandos de despliegue, y luego iterar leyéndole los errores de compilación de vuelta. Consejo: pide una imagen base pequeña (como alpine o una variante slim) y una compilación en múltiples etapas (multi-stage build); esto mantiene las imágenes ligeras, las compilaciones rápidas y la superficie de ataque pequeña. Plataformas como Fly.io, Google Cloud Run y Railway pueden desplegar un contenedor con un solo comando.
# Dockerfile — multi-stage Node app
FROM node:20-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app .
EXPOSE 3000
CMD ["node", "server.js"]
# Build and run locally
docker build -t my-app .
docker run -p 3000:3000 my-app