Volver

Docker para desarrolladores: Contenedores que cambiarán tu workflow

Aprende a usar Docker para crear entornos de desarrollo reproducibles y evitar el clásico 'en mi máquina funciona'

7 min de lectura
docker

Docker para desarrolladores: Contenedores que cambiarán tu workflow

Introducción

"Funciona en mi máquina" es probablemente la frase más frustrante en desarrollo de software. Docker resuelve este problema de raíz mediante contenedores: entornos aislados y reproducibles que funcionan igual en tu laptop, en producción, o en la máquina de tu compañero.

Conceptos básicos

Imágenes vs Contenedores

  • Imagen: Plantilla inmutable con todo lo necesario para ejecutar una aplicación
  • Contenedor: Instancia en ejecución de una imagen

Dockerfile

FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Comandos esenciales

# Construir imagen
docker build -t mi-app .

# Ejecutar contenedor
docker run -p 3000:3000 mi-app

# Ver contenedores activos
docker ps

# Ver todos los contenedores
docker ps -a

# Detener contenedor
docker stop <container_id>

# Eliminar contenedor
docker rm <container_id>

# Ver imágenes
docker images

Docker Compose

Para aplicaciones multicontenedor, Docker Compose es tu mejor aliado.

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: myapp
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Casos de uso comunes

Entorno de desarrollo local

Evita instalar MongoDB, Redis, PostgreSQL directamente en tu sistema.

docker run -d -p 27017:27017 mongo:7

Testing

Ejecuta tests en contenedores limpios y aislados.

CI/CD

Consistencia entre entornos de build y producción.

Beneficios tangibles

  • Reproducibilidad: Mismo entorno en todos lados
  • Aislamiento: Conflictos de dependencias eliminados
  • Rapidez: Levantas servicios en segundos
  • Eficiencia: Más ligero que máquinas virtuales
  • Escalabilidad: Fácil orquestar múltiples contenedores

Errores comunes

  1. No usar archivos .dockerignore
  2. Instalar dependencias en producción innecesarias
  3. No configurar healthchecks
  4. Exponer puertos sin necesidad
  5. No limpiar imágenes y contenedores no utilizados

Conclusión

Docker no es solo para DevOps. Es una herramienta fundamental para cualquier desarrollador que quiera trabajar de forma profesional y evitar los clásicos problemas de "funciona en mi máquina".

Referencias

  • Documentación oficial de Docker
  • Docker Hub (hub.docker.com)
  • "Docker Deep Dive" por Nigel Poulton