6.2 · Problemas recurrentes (playbook)

Nivel 6 · En la práctica

6.2Problemas recurrentes (playbook)

Objetivo: disponer de un playbook «síntoma → causas → acciones» para las fallas Docker comunes.
Tiempo estimado: 12 min · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • Diagnosticar : un síntoma = unas causas probables = una secuencia de acciones — no se corrige al azar.
  • Raíces : variables, puertos, volúmenes, rebuild olvidado, healthcheck, permisos, caché, login — 90 % de los bloqueos.
  • Verificar : ps, logs, config y prueba en volumen real, no solo en un run aislado.

Hilo Idir — la tabla pegada junto a la pantalla

Idir guarda esta tabla junto a su pantalla en Argel. Veredicto tras un trimestre : tres líneas le sirvieron más — el contenedor en Restarting, el puerto ya asignado, y los datos perdidos tras rm. Para cada una, terminó aplicando la secuencia (síntoma, causas, acciones) en lugar de relanzar al azar.

Síntoma observado, causas verificadas, acciones en orden : el reflejo cabe en tres tiempos.

Un reflejo por síntoma

La mayoría de los bloqueos Docker son grandes clásicos. Relacionar cada síntoma con sus causas probables y una secuencia de acciones ahorra un tiempo precioso.

SíntomaCausas probablesAcciones
Contenedor en Restartingvariable -e faltante, volumen en ruta incorrecta, puerto ocupadocompose ps, logs del servicio, corregir el archivo, up -d
port already allocatedokupa (run viejo), dos stacks con mismo puerto de hostdocker ps global, cambiar el puerto de host (izquierda)
Datos perdidos tras rmningún volumen, montaje en ruta incorrectaañadir un volumen nombrado, probar con rm + relanzamiento
up ignora el código nuevoimagen no reconstruidaup -d --build (o bind en dev)
Base «no lista» al arrancardepends_on sin condición, sin retryhealthcheck + condición healthy + retry en la aplicación
Permission denied en volumenmontaje root, USER non-root sin chownchown en el build / alinear UID, no volver a root
Imagen enorme / build lentoCOPY . . primero, sin .dockerignoredependencias primero + .dockerignore + multi-stage
Push deniedsin login, nombre sin namespace, sin permisoslogin, nombre cuenta/imagen, permisos
down lo borró tododown -v sobre datos deseadosdown sin -v por defecto ; copias + restauración probada
Error frecuente de interpretación: «la tabla sustituye el diagnóstico». No. La tabla da causas probables, no un veredicto : observa el síntoma, verifica la causa (ps, logs, config, rutas), y luego aplica la acción dirigida.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): Método de la tabla : 1) Nombrar el síntoma observado (Restarting, puerto asignado, datos perdidos, up que ignora el código, base no lista, permission denied, imagen enorme, push denied, down destructor). 2) Retener las causas probables de la tabla sin concluir solo (variables, puertos, volúmenes, rebuild, healthcheck, permisos, caché, login). 3) Aplicar las acciones en orden (ps, logs, config, corrección dirigida, rebuild, healthcheck, chown, .dockerignore, login, copia). 4) Corregir en la raíz (la misma falla que vuelve = un diseño por corregir : volúmenes, healthchecks, tags). Lección : una falla que vuelve pide un ajuste, no relanzamientos al azar.

Guion listo para decir — diagnosticar sin relanzar al azar (30 s)

«Mi síntoma : [Restarting / puerto asignado / datos perdidos / base no lista]. Verifico la causa probable de la tabla (ps, logs, config, rutas), aplico la acción dirigida y pruebo (relanzamiento, down/up, restauración).»

Modelo copiar-pegar — diagnóstico Docker

docker compose ps
docker compose logs -f api
docker ps -a
docker compose config
docker compose up -d --build

TPE / presupuesto ajustado

Sin tabla formal : un síntoma, la causa probable, la acción y quién prueba, anotados.

PYME Argel

Integrar las realidades locales al diagnóstico : máquina real, puertos ya ocupados, referente conocido.

Remoto / híbrido

Añadir trazas escritas a las acciones : a distancia, un log y una prueba down/up consignados evitan duplicados.

Intercultural

Explicitar las constataciones por escrito : lo que parece evidente (qué servicio, qué puerto) no lo es para todos.

Prudencia: Recordatorio genérico : una misma falla que vuelve no son diez incidentes — corrige el diseño en la raíz (volúmenes, healthchecks, tags) y nunca destruyas volúmenes deseados (down sin -v por defecto, copias probadas).

Reto 48h — aplica mañana

Detecta 1 síntoma actual (Restarting, puerto, datos, base no lista), aplica la línea de la tabla (síntoma nombrado + causa verificada + acción dirigida) y prueba.

Lista de salida de la sección
  • Sé relacionar un síntoma con sus causas probables.
  • Verifico ps, logs y config antes de corregir.
  • Pruebo cada corrección (relanzamiento, down/up, restauración).
Autoevaluación 1-5 : ¿diagnóstico antes de corregir?¿prueba sistemática tras corregir?
Comprueba tu comprensión

El contenedor de Idir entra en bucle en Restarting. ¿Qué reflejo aplica la tabla?

💡

Reflejo : diagnosticar el síntoma, identificar la causa, aplicar la acción dirigida — no relanzar al azar.