09 Debug y solución de problemas
Resolver problemas en entornos con Docker requiere saber inspeccionar contenedores, analizar procesos en ejecución y consultar métricas o logs. Esta nota recoge herramientas prácticas y comandos útiles.
Inspección de contenedores
El comando docker inspect muestra toda la información del contenedor en formato JSON:
docker inspect nombre_o_id
Para ver un valor concreto:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' nombre
Aspectos importantes a revisar:
- Rutas de montaje (
Mounts) - Variables de entorno (
Config.Env) - IP y redes asignadas
- Estado (
State.Status,State.ExitCode)
Logs, procesos y salud
Logs de salida estándar
docker logs nombre_o_id
Para seguir la salida en tiempo real:
docker logs -f nombre_o_id
Filtrar las últimas líneas:
docker logs --tail 50 nombre_o_id
Procesos en ejecución
docker top nombre_o_id
Muestra los procesos como lo haría el comando ps.
Ver estado de salud
Si se definió un HEALTHCHECK:
docker inspect -f '{{ .State.Health.Status }}' nombre_o_id
Comandos adicionales útiles
Estadísticas en tiempo real
docker stats
Muestra el consumo de CPU, memoria y red de los contenedores activos.
Entrar al contenedor
docker exec -it nombre_o_id /bin/bash
O:
docker exec -it nombre_o_id /bin/sh
Esto permite ejecutar comandos directamente dentro del contenedor y explorar su estado interno.
Consejos rápidos para detectar problemas
- ¿El contenedor se detiene solo? → Ver logs y
ExitCode - ¿No hay acceso desde fuera? → Ver redes y puertos (
inspect,docker ps) - ¿No responde la app? → Probar
execy hacer curl/ping interno - ¿No arranca? → Probar manualmente el
CMDdel Dockerfile