> **Resumen en 3 puntos** > > * Los logs de la consola de los contenedores Docker se guardan como archivos en el **disco del host, no en la memoria** del sistema. > * El comando `docker logs` lee y muestra estos archivos almacenados. > * Para evitar que los archivos de log crezcan indefinidamente, es crucial **configurar las opciones de rotación de logs (`max-size`, `max-file`)**. ## 1. ¿Dónde y cómo se almacenan los logs? {#sec-37c2a29cff35} [[Docker]] captura las transmisiones de salida estándar (stdout) y error estándar (stderr) de los contenedores y las procesa a través de un **controlador de logging (Logging Driver)**. Si no se especifica una configuración particular, Docker utiliza por defecto el controlador de logging `json-file`. * **Ubicación de almacenamiento**: Los logs de los contenedores se guardan como archivos en formato JSON en una ruta específica del sistema host. Generalmente, la ruta es la siguiente: * `/var/lib/docker/containers/[ID_del_contenedor]/[ID_del_contenedor]-json.log` * **Comando `docker logs`**: Este comando, en realidad, no muestra el contenido en la memoria, sino que lee el archivo de log JSON mencionado anteriormente y lo presenta en la terminal. ![Imagen de ChatGPT 12 de mayo de 2026, 12:37:29 PM](/media/whitedec/blog_img/ff3498a786c645ecb031d714a053d4a4.webp) ## 2. ¿Los logs no agotan el espacio en disco si se acumulan continuamente? {#sec-4e6257ec2aba} Sí, es correcto. Si no se toman medidas, los archivos de log pueden crecer indefinidamente y ocupar todo el espacio en disco del host. Para evitar esto, Docker ofrece opciones de **rotación de logs (Log Rotation)** que permiten limitar el tamaño y la cantidad de archivos de log. Por ejemplo, al ejecutar el comando `docker run`, puedes añadir las siguientes opciones: ``` docker run -d \ --log-driver json-file \ --log-opt max-size=10m \ --log-opt max-file=3 \ nginx ``` * `--log-opt max-size=10m`: Limita el tamaño máximo de un archivo de log a **10MB**. * `--log-opt max-file=3`: Limita el número máximo de archivos de log a **3**. Si se supera este número, el archivo más antiguo se elimina. Con esta configuración, los logs de ese contenedor en particular utilizarán un máximo de 30MB (10MB * 3 archivos) de espacio en disco. *** ## 3. Configuración en el archivo `docker-compose.yml` {#sec-890442ea3ac0} Con Docker Compose, puedes configurar las opciones de logging de manera muy sencilla para cada servicio dentro del archivo `docker-compose.yml`. Piensa en ello como si las opciones `--log-opt` del comando `docker run` se introdujeran en formato YAML. A continuación, se muestra un ejemplo de cómo aplicar la rotación de logs a un servicio llamado `my-app`: ``` services: my-app: image: your-app-image # ... otras configuraciones ... deploy: resources: limits: memory: 512M # 👇 Esta es la sección de configuración de logs. logging: driver: "json-file" # Controlador de logging a usar (puede omitirse si es el predeterminado) options: max-size: "10m" # Tamaño máximo por archivo: 10MB max-file: "3" # Número máximo de archivos: 3 ``` * **`logging`**: Esta clave inicia la configuración de logging para el servicio. * **`driver`**: Especifica el controlador de logging a utilizar. `json-file` es el valor predeterminado. * **`options`**: Establece las opciones que se pasarán al controlador. * **`max-size`**: Es idéntico a `--log-opt max-size` de `docker run`. * **`max-file`**: Es idéntico a `--log-opt max-file` de `docker run`. Ahora, al iniciar este servicio con `docker-compose up`, los logs del contenedor `my-app` rotarán automáticamente, utilizando un máximo de 30MB (10MB * 3 archivos) de espacio en disco. ## 4. Configuración por defecto para todos los contenedores {#sec-1a0729e53c34} Si te resulta tedioso aplicar las opciones individualmente a cada contenedor y deseas establecer una política predeterminada para todo el sistema, la mejor manera es modificar el archivo de **configuración del demonio (Daemon) de Docker**. 1. Abre o crea el archivo `/etc/docker/daemon.json`. (Si no existe, créalo). 2. Añade el siguiente contenido: ```json { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } ``` 3. Reinicia el demonio de Docker. ```bash sudo systemctl restart docker ``` Con esta configuración, **todos los contenedores** que se creen en el futuro seguirán automáticamente esta política, a menos que se especifiquen opciones de logging diferentes para un contenedor en particular mediante el archivo `docker-compose.yml` o el comando `docker run`. En ese caso, la **configuración individual tendrá prioridad** sobre la configuración del demonio. * **Configuración de servicio individual**: La configuración en la sección `logging` dentro del archivo `docker-compose.yml` es la más común y conveniente. * **Configuración global predeterminada**: Para aplicar una política uniforme a todos los contenedores del servidor, modifica el archivo `/etc/docker/daemon.json`.