GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

¿Dónde guarda Docker los archivos de registro?

La depuración de la mayoría de los programas de Linux generalmente implica verificar los archivos de registro, lo que puede ser un proceso complejo. Sin embargo, cuando se ejecuta en un entorno en contenedores bajo Docker, deberá usar herramientas más específicas para depurar aplicaciones en producción.

¿Dónde se almacenan los registros?

La respuesta simple es que Docker almacena registros de contenedores en su ubicación de almacenamiento principal, /var/lib/docker/ . Cada contenedor tiene un registro específico para su ID (el ID completo, no el abreviado que suele mostrarse) y puede acceder a él así:

/var/lib/docker/containers/ID/ID-json.log

Ahí es dónde están almacenados, pero dado que están en formato JSON, no son fáciles de leer y tener que usar la identificación completa del contenedor es molesto. Docker proporciona un comando integrado para verlos:

docker logs -f e4bd48ef3103

Aquí, el -f flag mantendrá el indicador abierto y "seguirá" cualquier nueva entrada en el archivo. También puede --tail el archivo, o use --timestamps para mostrar el tiempo de registro, o use --until--since para filtrar según el tiempo.

Si está usando Docker Compose, puede usar el comando de registro para ver todos los registros fácilmente:

docker-compose logs

Sin embargo, una cosa que notará es que esto es STDOUT y STDERR, que es útil para muchas cosas, pero solo le muestra la salida de la consola del punto de entrada especificado por "CMD" en el archivo Docker. Muchas aplicaciones tienen sus propios sistemas de registro dedicados, que a menudo registran archivos como /var/log/nginx/access.log . Todavía es posible acceder a registros como este desde el lado del host a través de Docker.

Ver registros de aplicaciones dentro de contenedores

Dependiendo del contenedor, esto podría no ser necesario. Por ejemplo, el contenedor NGINX predeterminado está configurado para enviar sus registros de Docker a STDOUT para facilitar la verificación de registros. Lo hace con un enlace simbólico de /dev/stdout al archivo de registro y puede configurar algo similar para sus contenedores.

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
&& ln -sf /dev/stderr /var/log/nginx/error.log

Pero, si desea consultar archivos específicos dentro de un contenedor, puede hacerlo. Docker proporciona el exec -it para permitirle ejecutar cualquier comando dentro de cualquier proceso de Docker en ejecución. Con esto, puede rastrear un archivo de registro dentro de un contenedor Docker:

docker exec -it e4bd48ef3103 tail -f log.txt

Debido a que esto le permite ejecutar cualquier comando, puede usar journalctl o cualquier otra estrategia de depuración que desee, siempre que la anteceda con docker exec -it . Incluso puede ejecutar /bin/bash si quieres entrar y husmear.

Una solución más permanente que funciona mejor con los servicios de host es usar un montaje de volumen de Docker. Puede enlazar un directorio como /var/log/nginx a un volumen visible desde el host. Primero, cree un nuevo volumen:

docker volume create nginx-logs

Y ejecute el contenedor con --mount :

docker run -d 
--name devtest 
--mount source=nginx-logs,target=/var/log/nginx 
nginx:latest

Si usa Docker Compose, el proceso se puede automatizar:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-logs:/var/log/nginx/
volumes:
  nginx-logs:

De esta manera, cualquier servicio de agregación de registros en la máquina host podrá incorporar directamente los archivos de registro.

Visualización de registros del demonio Docker

Si, en cambio, desea ver los registros específicos del servicio Docker general en su servidor, y no cualquier aplicación en contenedor específica, querrá ver el journalctl registros:

sudo journalctl -fu docker.service

Aquí es donde se almacena en la mayoría de los sistemas, pero en algunos está en un lugar diferente:

  • Amazon Linux:/var/log/docker
  • CentOS/RHEL:/var/log/messages | grep docker
  • macOS:~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
  • Windows:AppDataRoamingDockerlogvmdockerd.log

Docker
  1. ¿Comando para limpiar archivos de registro antiguos?

  2. ¿Dónde almacena los archivos Wine?

  3. archivos de registro de Linux

  4. Cómo cambiar la ruta del registro de auditoría en MySQL Docker

  5. Dónde encontrar archivos de registro de inicio de sesión SSH en centos

¿Dónde se almacenan las imágenes y los contenedores de Docker en el host?

Cómo centralizar la gestión de registros con Graylog mediante Docker

Cómo copiar archivos con Docker cp a su Docker Container

Mantenga sus imágenes de Docker manejables con Docker Image Prune

Cómo copiar archivos entre el host y el contenedor Docker

Cómo acceder a archivos fuera de un contenedor Docker