Controlador de registro JSON File
Por defecto, Docker captura la salida estándar (y el error estándar) de todos tus contenedores y los escribe en archivos utilizando el formato JSON. El formato JSON anota cada línea con su origen (stdout o stderr) y su marca de tiempo. Cada archivo de registro contiene información sobre un solo contenedor.
{
"log": "Log line is here\n",
"stream": "stdout",
"time": "2019-01-01T11:11:11.111111111Z"
}WarningEl controlador de registro
json-fileutiliza almacenamiento basado en archivos. Estos archivos están diseñados para ser accedidos exclusivamente por el demonio de Docker. Interactuar con estos archivos con herramientas externas puede interferir con el sistema de registro de Docker y provocar un comportamiento inesperado, por lo que debe evitarse.
Uso
Para usar el controlador json-file como el controlador de registro predeterminado, establece las claves log-driver y log-opts con los valores adecuados en el archivo daemon.json. Para obtener más información sobre cómo configurar Docker mediante daemon.json, consulta
daemon.json.
NoteSi usas Docker Desktop, edita la configuración del demonio a través del panel de Docker Desktop. Abre Settings y selecciona Docker Engine. Para más detalles, consulta Configuración de Docker Engine.
El siguiente ejemplo establece el controlador de registro en json-file y configura las opciones max-size y max-file para habilitar la rotación automática de registros.
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}NoteLas opciones de configuración de
log-optsen el archivo de configuracióndaemon.jsondeben proporcionarse como cadenas. Los valores booleanos y numéricos (como el valor paramax-fileen el ejemplo anterior) deben, por lo tanto, estar entre comillas (").
Reinicia Docker para que los cambios surtan efecto en los contenedores nuevos. Los contenedores existentes no utilizarán la nueva configuración de registro automáticamente.
Puedes establecer el controlador de registro para un contenedor específico utilizando la opción --log-driver al emplear docker container create o docker run:
$ docker run \
--log-driver json-file --log-opt max-size=10m \
alpine echo hello world
Opciones
El controlador de registro json-file admite las siguientes opciones de registro:
| Opción | Descripción | Valor de ejemplo |
|---|---|---|
max-size | El tamaño máximo del registro antes de rotarlo. Un número entero positivo más un modificador que representa la unidad de medida (k, m o g). El valor predeterminado es -1 (ilimitado). | --log-opt max-size=10m |
max-file | El número máximo de archivos de registro que pueden estar presentes. Si la rotación de los registros crea un exceso de archivos, se elimina el archivo más antiguo. Solo es efectivo cuando max-size también está configurado. El valor predeterminado es 1. | --log-opt max-file=3 |
labels | Aplica al iniciar el demonio de Docker. Una lista separada por comas de etiquetas relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt labels=production_status,geo |
labels-regex | Similar y compatible con labels. Una expresión regular para hacer coincidir etiquetas relacionadas con el registro. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt labels-regex=^(production_status|geo) |
env | Aplica al iniciar el demonio de Docker. Una lista separada por comas de variables de entorno relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt env=os,customer |
env-regex | Similar y compatible con env. Una expresión regular para hacer coincidir variables de entorno relacionadas con el registro. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt env-regex=^(os|customer) |
compress | Alterna la compresión de los registros rotados. El valor predeterminado es false (sin compresión). | --log-opt compress=true |
Ejemplos
Este ejemplo inicia un contenedor alpine que puede tener un máximo de 3 archivos de registro de no más de 10 megabytes cada uno.
$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash