• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
      • Ajuste de Curvas
      • Calculadora de Matrices
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Docker Compose: el día a día. Cómo ver qué funciona y qué no

Docker

octubre 6, 2026 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 8 minutos

Si acabas de montar tu aplicación en Docker Compose, la primera pregunta que haces cada mañana es siempre la misma: ¿está todo levantado y funcionando? Y la segunda, cuando algo va mal: ¿dónde está el problema?

Este manual te enseña exactamente cómo comprobar eso: los comandos que necesitas en el día a día para saber qué está corriendo, qué falla, cómo entrar dentro de un contenedor y cómo actualizar tu aplicación sin quebrar nada.

Tabla de contenidos

  • 1. El panorama: Docker vs Compose
  • 2. Lo primero: ¿qué está en marcha?
    • 2.1. Ver TODO lo que corre en la máquina
  • 3. Los logs: dónde está la verdad
    • 3.1. Leer los últimos logs
    • 3.2. Seguir los logs en vivo
    • 3.3. Todos los servicios juntos
    • 3.4. Con marca de tiempo
    • 3.5. Solo lo reciente
    • 3.6. El truco del “cola + follow”
  • 4. Arrancar, parar, reiniciar: el ciclo de vida
    • 4.1. Arrancar todo
    • 4.2. Parar sin borrar
    • 4.3. Reiniciar
    • 4.4. Desmontar completamente
    • 4.5. Regla mental
  • 5. Entrar dentro del contenedor
    • 5.1. Abrir una shell interactiva
    • 5.2. Ejecutar un comando concreto sin abrir shell
    • 5.3. Ejecutar un comando en un contenedor nuevo (efímero)
  • 6. Diagnóstico e inspección profunda
    • 6.1. Ver recursos en vivo
    • 6.2. Inspección detallada de un contenedor
    • 6.3. Procesos corriendo dentro
  • 7. Imágenes, volúmenes, redes: la infraestructura
    • 7.1. Ver imágenes descargadas
    • 7.2. Ver volúmenes (donde van los datos)
    • 7.3. Ver redes
    • 7.4. Cuánto espacio ocupa todo
  • 8. Limpieza: liberar espacio
    • 8.1. Limpieza básica
    • 8.2. Limpieza agresiva
    • 8.3. Borrar solo volúmenes
  • 9. Actualizar la aplicación
    • 9.1. Reconstruir todo con cambios
    • 9.2. Solo cambió la configuración (variables de entorno, .env)
    • 9.3. Reconstrucción totalmente limpia
  • 10. Flujos típicos: recetas de troubleshooting
    • 10.1. Pregunta: “¿Está todo bien ahora mismo?”
    • 10.2. Pregunta: “La app no responde, ¿qué pasa?”
    • 10.3. Pregunta: “Cambié configuración y quiero aplicarla”
    • 10.4. Pregunta: “Desplegué una versión nueva del código”
    • 10.5. Pregunta: “Quiero empezar de cero (borrando datos)”
  • 11. Chuleta rápida
  • 12. Conclusiones

El panorama: Docker vs Compose

Antes de empezar, una aclaración mental importante porque es la mayor fuente de confusión:

  • Docker es la herramienta global. Todos los contenedores en tu máquina, sin importar para qué proyecto.
  • Compose es el orquestador local de tu proyecto. Solo se ocupa de los servicios que definiste en tu docker-compose.yml de esa carpeta.

Piénsalo así:

  • docker ps → “¿Qué contenedores hay en TODA mi máquina?” (proyecto A, proyecto B, BD compartida…)
  • docker compose ps → “¿Qué servicios del mi proyecto actual están en marcha?”

Para la mayoría de tu día a día usarás Compose. Los comandos de Docker puro son para cuando necesitas ver el panorama completo o limpiar la máquina.

Nota técnica: Si tu archivo se llama algo distinto a docker-compose.yml, necesitarás añadir -f nombre.yml a los comandos de Compose. Y donde veas app, sustituye por el nombre real de tu servicio en el compose.

Por qué migrar tus proyectos TypeScript a ES Modules en 2026
En Analytics Lane
Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Lo primero: ¿qué está en marcha?

La pregunta más frecuente: ahora mismo, ¿qué corre?

docker compose ps

Esto te muestra solo los servicios de TU proyecto. Salida típica:

NAME      COMMAND             STATUS              PORTS
app       python main.py      Up 3 minutes        0.0.0.0:8000->8000/tcp
db        postgres            Up 5 minutes (healthy)
redis     redis-server        Up 3 minutes

Qué mirar en cada columna:

  • STATUS → aquí está toda la información:
  • Up 3 minutes = corriendo normal.
  • Up 3 minutes (healthy) = corriendo y pasa los chequeos de salud (healthcheck). Es lo ideal.
  • Up 3 minutes (unhealthy) = el contenedor sigue vivo, pero la aplicación no responde bien. Algo falla dentro.
  • Restarting = se cae y se reinicia una y otra vez en bucle. Hay un error en el código o la configuración.
  • Exited (0) = terminó correctamente y se paró. Exited (1) u otro número = terminó con error.
  • PORTS → qué puertos expone y dónde están mapeados. 8000->8000 significa que el puerto 8000 del contenedor está accesible en el 8000 de tu máquina.
  • NAMES → el nombre del servicio, que usarás en otros comandos.

Publicidad


Ver TODO lo que corre en la máquina

Si quieres ver todos los contenedores (no solo los de tu proyecto):

docker ps

E incluso los parados:

docker ps -a

Los logs: dónde está la verdad

Cuando algo no funciona, el primer sitio donde mirar son siempre los logs. Son tu conexión directa a lo que está pasando dentro del contenedor.

Leer los últimos logs

docker compose logs app --tail 50

Te muestra las últimas 50 líneas. --tail 10, --tail 100, lo que necesites.

Publicidad


Seguir los logs en vivo

docker compose logs app -f

El -f significa “follow” (seguir). Verás el log en tiempo real. Ctrl+C para salir. Muy útil mientras estás desarrollando o debugueando.

Todos los servicios juntos

docker compose logs -f

Sin especificar app, ves los logs de todos los servicios simultáneamente. Útil para ver cómo interactúan.

Con marca de tiempo

docker compose logs app -f --timestamps

Si hay un problema a las 14:32:17, verlo en el log es mucho más fácil que en medio de un flujo de eventos.

Publicidad


Solo lo reciente

docker compose logs app --since 1h

Solo logs de la última hora. Útil cuando tienes meses de historial y buscas algo específico.

El truco del “cola + follow”

Para no ahogarte en logs antiguos pero sí ver lo nuevo en vivo:

docker compose logs app --tail 20 -f

Empieza mostrando las últimas 20 líneas, luego sigue en tiempo real. Lo mejor de los dos mundos.

Arrancar, parar, reiniciar: el ciclo de vida

El ciclo que haces constantemente.

Publicidad


Arrancar todo

docker compose up -d

El -d significa “detached” (desapegado): se ejecuta en segundo plano. Sin -d, ocuparías la terminal viendo los logs.

Si es la primera vez, Compose descargará las imágenes necesarias. Puede tardar.

Parar sin borrar

docker compose stop

Los contenedores se detienen, pero siguen existiendo. Puedes volver a arrancarlos con:

docker compose start

Es como pausar: todo se conserva en memoria, tus volúmenes de datos están intactos.

Reiniciar

docker compose restart app

O todos:

docker compose restart

Equivale a parar y volver a arrancar. A veces lo necesitas cuando algo se queda “pegado”.

Publicidad


Desmontar completamente

docker compose down

Para Y ELIMINA los contenedores y la red de tu proyecto. PERO los volúmenes (datos persistentes) se conservan. Bases de datos, modelos descargados, todo sigue ahí.

Si de verdad quieres empezar de cero y BORRAR TODO, incluidos datos:

docker compose down -v

El -v de “volúmenes”. Cuidado: pierdes modelos descargados, bases de datos y cualquier dato guardado en volúmenes.

Regla mental

  • stop → pausa (contenedores existen, pueden reanudarse).
  • down → desmonta (contenedores se borran, datos persisten).
  • down -v → arrasa (borra TODO, incluyendo datos).

Entrar dentro del contenedor

A veces necesitas inspeccionar qué hay dentro: variables de entorno, archivos, ejecutar comandos puntuales.

Publicidad


Abrir una shell interactiva

docker compose exec app sh

Te da una terminal dentro del contenedor. Ahora escribes como si estuvieras dentro:

# Ver variables de entorno
printenv

# Listar archivos
ls -la /app

# Ver un archivo
cat config.json

# Salir
exit

Si la imagen lo tiene, puedes pedir bash en lugar de sh:

docker compose exec app bash

(Las imágenes pequeñas, como Alpine, solo tienen sh.)

Ejecutar un comando concreto sin abrir shell

docker compose exec app printenv DATABASE_URL

Te muestra solo el resultado del comando, sin abrir sesión interactiva.

Ejecutar un comando en un contenedor nuevo (efímero)

docker compose run --rm app python -c "print('hola')"

Esto crea un contenedor nuevo, ejecuta el comando, y lo borra (--rm) cuando acaba. Útil para tareas suelta que no necesitan modificar estado.

Diferencia importante:

  • exec → entra en un contenedor ya en marcha.
  • run → crea un contenedor nuevo para esa tarea.

Publicidad


Diagnóstico e inspección profunda

Cuando algo está raro pero no es obvio.

Ver recursos en vivo

docker stats

CPU, memoria, red que consume cada contenedor. Ctrl+C para salir. Si algo come memoria como loco, aquí lo verás al instante.

Inspección detallada de un contenedor

docker inspect nombre_o_id_contenedor

Te da un JSON gigante con TODO: IP, puertos, volúmenes montados, variables de entorno, estado de salud, última hora de inicio, etc.

Si solo quieres el estado de salud:

docker inspect --format '{{json .State.Health}}' nombre | python3 -m json.tool

Útil cuando ves unhealthy en docker ps y quieres saber exactamente por qué.

Publicidad


Procesos corriendo dentro

docker compose top app

Te muestra qué procesos están corriendo dentro del contenedor. Tipo ps pero dentro del contenedor.

Imágenes, volúmenes, redes: la infraestructura

Ver imágenes descargadas

docker images

Todas las imágenes que tienes en la máquina (descargadas o construidas). Ocupan espacio.

Publicidad


Ver volúmenes (donde van los datos)

docker volume ls

Los volúmenes son donde persisten datos: modelos descargados, bases de datos, archivos que carga tu app.

Ver redes

docker network ls

Compose crea una red por proyecto. Los contenedores dentro de una red pueden comunicarse por nombre de servicio.

Cuánto espacio ocupa todo

docker system df

Resumen de cuánto espacio tienen imágenes, contenedores y volúmenes. Útil para saber si necesitas limpiar.

Publicidad


Limpieza: liberar espacio

Docker acumula basura: imágenes viejas, contenedores parados, caché de builds. De vez en cuando conviene limpiar.

Limpieza básica

docker system prune

Borra:

  • Contenedores parados.
  • Redes que no usa nadie.
  • Imágenes “colgadas” (sin etiqueta, sin usar).
  • Caché de build.

Es seguro: no toca volúmenes ni imágenes que usan contenedores vivos.

Limpieza agresiva

docker system prune -a

Igual que arriba, pero además borra todas las imágenes no usadas por ningún contenedor. Si luego necesitas esa imagen, la descargará de nuevo.

Publicidad


Borrar solo volúmenes

docker volume prune

Borra volúmenes que no usa nadie. Cuidado: puede eliminar datos persistentes (modelos descargados, base de datos antiguas). Revisa con docker volume ls antes.

Actualizar la aplicación

El ciclo habitual cuando cambias el código o la configuración.

Reconstruir todo con cambios

docker compose up -d --build

Reconstruye la imagen (importante si cambiaste requirements.txt, Dockerfile, etc.) y arranca. El -d en segundo plano.

Publicidad


Solo cambió la configuración (variables de entorno, .env)

docker compose up -d --force-recreate

No reconstruye la imagen (más rápido), pero sí destruye y crea contenedores nuevos para que piquen las nuevas variables. Necesario si tocaste .env sin cambiar código.

Reconstrucción totalmente limpia

docker compose build --no-cache && docker compose up -d

Ignora la caché de capas Docker (que normalmente reutiliza pasos anteriores). Usa esto si tienes dudas de que la caché esté causando problemas.

Flujos típicos: recetas de troubleshooting

Publicidad


Pregunta: “¿Está todo bien ahora mismo?”

docker compose ps

Mira STATUS. Si todo dice Up y healthy, estás bien.

Pregunta: “La app no responde, ¿qué pasa?”

# 1. ¿El contenedor está sano?
docker compose ps

# 2. ¿Qué dice el log?
docker compose logs app --tail 80

# 3. ¿La configuración es la esperada?
docker compose exec app printenv DATABASE_URL

Sigue ese orden. El 80% de los problemas está en uno de esos tres sitios.

Pregunta: “Cambié configuración y quiero aplicarla”

docker compose up -d --force-recreate

Recrea los contenedores para que lean el .env actualizado.

Publicidad


Pregunta: “Desplegué una versión nueva del código”

docker compose up -d --build
docker compose ps
docker compose logs app --tail 50 -f

Reconstruye con el código nuevo, verifica que levantó bien, y sigue los logs un momento para asegurarte de que no explota.

Pregunta: “Quiero empezar de cero (borrando datos)”

docker compose down -v
docker compose up -d --build

Borra todo incluidos volúmenes (-v), luego reconstruye todo limpio.

Chuleta rápida

Imprime esto, tenlo en una esquina:

Quiero…Comando
Ver mi proyecto (servicios activos)docker compose ps
Ver TODO en la máquinadocker ps
Ver logs últimas líneasdocker compose logs app --tail 50
Seguir logs en vivodocker compose logs app -f
Arrancar en segundo planodocker compose up -d
Parar (sin borrar)docker compose stop
Reanudar lo paradodocker compose start
Reiniciar un serviciodocker compose restart app
Recrear tras cambio de configdocker compose up -d --force-recreate
Actualizar con código nuevodocker compose up -d --build
Entrar al contenedordocker compose exec app sh
Ver recursos (CPU/RAM)docker stats
Desmontar proyectodocker compose down
Desmontar + borrar datosdocker compose down -v
Liberar espaciodocker system prune

Publicidad


Conclusiones

Docker Compose simplifica mucho la gestión del día a día, pero solo si sabes dónde mirar y qué preguntarle. Los 5 comandos que usarás el 80% del tiempo son:

  1. docker compose ps — ¿está todo bien?
  2. docker compose logs app -f — ¿qué está pasando?
  3. docker compose up -d --build — actualizar código.
  4. docker compose up -d --force-recreate — actualizar configuración.
  5. docker compose exec app sh — entrar a inspeccionar.

Memoriza esos, y el resto es googleable. La máquina está bajo control.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Por qué migrar tus proyectos TypeScript a ES Modules en 2026
  • Actualizar expresslanets a ES Modules con tsx y Vitest
  • Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest
  • Errores comunes al interpretar resultados estadísticos
  • Método del codo: interpretación correcta y limitaciones
  • Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas
  • Pareto/NBD: cuando el abandono silencioso cambia el CLV
  • Cómo construir tu primer scorecard paso a paso

Publicado en: Herramientas Etiquetado como: Docker

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Docker Compose: el día a día. Cómo ver qué funciona y qué no

octubre 6, 2026 Por Daniel Rodríguez

Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest

octubre 1, 2026 Por Daniel Rodríguez

Cómo construir tu primer scorecard paso a paso

septiembre 29, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Identificar y eliminar duplicados en Excel publicado el marzo 13, 2019 | en Herramientas
  • Docker Compose: el día a día. Cómo ver qué funciona y qué no publicado el octubre 6, 2026 | en Herramientas
  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • IndexError en Python: Cómo evitar el error ‘list index out of range’ en tus listas publicado el marzo 31, 2025 | en Python
  • Comparar archivos en Visual Studio Code publicado el enero 10, 2024 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • Daniel Rodríguez en Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Hatepi en Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Daniel Rodríguez en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • Juan en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto