Skip to main content

Configuring Docker Logging Driver for Loki

Docker allows you to use Loki as a logging driver to send container logs directly to your Loki instance. This guide explains how to configure the Docker logging driver for Loki.


1. Changing the Default Logging Driver​

To configure Docker to use Loki as the default logging driver, you need to update the Docker daemon configuration.


Step 1: Update the /etc/docker/daemon.json File​

Create or edit the Docker daemon configuration file at /etc/docker/daemon.json. Add the following configuration:

Basic Configuration:​

{
"debug": true,
"log-driver": "loki"
}

This sets Loki as the default logging driver and enables debugging for Docker.


2. Sending Logs to Loki Cloud (Grafana)​

To send container logs to a Loki cloud instance in Grafana, you need to configure additional options.

Example Configuration:​

{
"debug": true,
"log-driver": "loki",
"log-opts": {
"loki-url": "https://<user_id>:<password>@logs-us-west1.grafana.net/loki/api/v1/push",
"loki-batch-size": "400"
}
}

Explanation of Configuration Options:​

  • loki-url: The URL of your Loki instance, including the user ID and password. Replace <user_id> and <password> with your credentials.
  • loki-batch-size: Specifies the batch size for log messages (default is 400). Adjust this based on your workload.

3. Restart Docker​

After updating the configuration file, restart the Docker daemon to apply the changes:

sudo systemctl restart docker

4. Verify the Configuration​

To ensure the logging driver is set to Loki, run the following command:

docker info | grep "Logging Driver"

The output should show loki as the logging driver.


5. Setting Logging Driver Per Container (Optional)​

If you don’t want to set Loki as the default logging driver for all containers, you can configure it on a per-container basis:

docker run --log-driver=loki --log-opt loki-url="https://<user_id>:<password>@logs-us-west1.grafana.net/loki/api/v1/push" my-container
Important
  • Ensure that the Loki URL is correct and reachable from the Docker host.
  • Replace sensitive credentials (e.g., <user_id> and <password>) with appropriate secrets or environment variables for better security.