Conceptos

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

ConceptoFunciónEjemplo
ImagePlantilla inmutable con el sistema de archivosnode:22-alpine, imagen custom
ContainerInstancia en ejecución de una imagendocker run my-app
DockerfileReceta para construir una imagenFROM, COPY, RUN, CMD
RegistryRepositorio de imágenesDocker Hub, ECR, GHCR
VolumeAlmacenamiento persistente fuera del contenedorDatos 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

AspectoDockerVM
OverheadMínimo (comparte kernel)Alto (OS completo)
StartupSegundosMinutos
TamañoMBsGBs
AislamientoProcesoHardware

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

Conceptos