Compartir comentarios
Las respuestas se generan en base a la documentación.

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 operativoUbicación
LinuxUtiliza 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.

  1. 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.

  2. 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 clave log-level está configurada, su valor sea info o debug. info es el valor predeterminado, y los valores posibles son debug, info, warn, error, fatal.

  3. Envía una señal HUP al 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.service en sistemas Linux que utilizan systemctl.
  • /var/log/messages, /var/log/daemon.log o /var/log/docker.log en sistemas Linux más antiguos.
Note

No 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.log

Las 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.