Leer los registros (logs) del demonio
Los registros del demonio pueden ayudarte a diagnosticar problemas. Los registros se pueden guardar en una de las siguientes ubicaciones, según la configuración del sistema operativo y el subsistema de registro utilizado:
| Sistema operativo | Ubicación |
|---|---|
| Linux | Utiliza el comando journalctl -xu docker.service (o lee /var/log/syslog o /var/log/messages, según tu distribución de Linux) |
| macOS (Docker Desktop) | ~/Library/Containers/com.docker.docker/Data/log/vm/init.log |
| Windows (WSL2) | %LOCALAPPDATA%\Docker\log\vm\init.log |
| Windows (Contenedores Windows) | Los registros se encuentran en el Visor de eventos de Windows (Windows Event Log) |
En macOS y Windows (WSL2), Docker Desktop escribe los registros del demonio (dockerd, containerd y otros servicios de la máquina virtual) en un único archivo multiplexado init.log en formato JSON. Cada línea contiene un campo "component" que identifica el servicio. Para realizar un seguimiento de los registros, abre una terminal y utiliza el comando tail con la opción -f. Los registros se imprimirán hasta que finalices el comando con CTRL+c:
$ tail -f ~/Library/Containers/com.docker.docker/Data/log/vm/init.log
{"component":"dockerd","level":"debug","msg":"attach: stdout: begin","time":"2021-07-28T10:21:21.497642089Z"}
{"component":"dockerd","level":"debug","msg":"attach: stderr: begin","time":"2021-07-28T10:21:21.497714291Z"}
...
^C
Para filtrar solo la salida de dockerd:
$ grep '"component":"dockerd"' ~/Library/Containers/com.docker.docker/Data/log/vm/init.log
Habilitar la depuración (debug)
Hay dos formas de habilitar la depuración. El enfoque recomendado es establecer la clave debug en true en el archivo daemon.json. Este método funciona para todas las plataformas de Docker.
Edita el archivo
daemon.json, que normalmente se encuentra en/etc/docker/. Es posible que necesites crear este archivo si aún no existe. En macOS o Windows, no edites el archivo directamente. En su lugar, edítalo a través de la configuración de Docker Desktop.Si el archivo está vacío, agrega lo siguiente:
{ "debug": true }Si el archivo ya contiene JSON, simplemente agrega la clave
"debug": true, teniendo cuidado de añadir una coma al final de la línea si no es la última línea antes de la llave de cierre. Verifica también que si la clavelog-levelestá configurada, su valor seainfoodebug.infoes el valor predeterminado, y los valores posibles sondebug,info,warn,error,fatal.Envía una señal
HUPal demonio para obligarlo a recargar su configuración. En hosts Linux, utiliza el siguiente comando:$ sudo kill -SIGHUP $(pidof dockerd)En hosts Windows, reinicia Docker.
En lugar de seguir este procedimiento, también puedes detener el demonio de Docker y reiniciarlo manualmente con la opción de depuración -D. Sin embargo, esto puede provocar que Docker se reinicie con un entorno diferente al que crean los scripts de inicio del host, lo que podría dificultar la depuración.
Forzar el registro de un volcado de pila (stack trace)
Si el demonio no responde, puedes forzar el registro de un volcado de pila completo enviando una señal SIGUSR1 al demonio.
Linux:
$ sudo kill -SIGUSR1 $(pidof dockerd)Windows Server:
Descarga docker-signal.
Obtén el ID de proceso de dockerd con
Get-Process dockerd.Ejecuta el ejecutable con la opción
--pid=<PID del demonio>.
Esto obliga a registrar un volcado de pila, pero no detiene el demonio. Los registros del demonio mostrarán el volcado de pila o la ruta al archivo que lo contiene si se guardó en un archivo.
El demonio continúa funcionando después de manejar la señal SIGUSR1 y volcar las pilas al registro. Los volcados de pila se pueden utilizar para determinar el estado de todas las goroutines y subprocesos (threads) dentro del demonio.
Ver volcados de pila
El registro del demonio de Docker se puede ver utilizando uno de los siguientes métodos:
- Ejecutando
journalctl -u docker.serviceen sistemas Linux que utilizansystemctl. /var/log/messages,/var/log/daemon.logo/var/log/docker.logen sistemas Linux más antiguos.
NoteNo es posible generar manualmente un volcado de pila en Docker Desktop para Mac o Docker Desktop para Windows. Sin embargo, puedes seleccionar el icono de Docker en la barra de tareas y elegir Troubleshoot para enviar información a Docker si experimentas problemas.
Busca en los registros de Docker un mensaje como el siguiente:
...goroutine stacks written to /var/run/docker/goroutine-stacks-2017-06-02T193336z.logLas ubicaciones donde Docker guarda estos volcados de pila dependen de tu sistema operativo y de la configuración. A veces puedes obtener información de diagnóstico útil directamente de los volcados de pila. De lo contrario, puedes proporcionar esta información a Docker para que te ayude a diagnosticar el problema.