Skip to content

Rotacja logów

Rotacja logów kontenerów Dockera

Rotacja logów ogranicza rozmiar logów kontenerów zapisywanych driverem json-file i zmniejsza ryzyko zapełnienia dysku.

Założenia konfiguracyjne:

  • Docker zapisuje logi driverem json-file
  • Rotacja konfigurowana jest globalnie przez /etc/docker/daemon.json
  • Ustawienia w pełni dotyczą nowo tworzonych kontenerów (dla już istniejących zwykle wymagane jest odtworzenie)

Tworzenie katalogu /etc/docker

Tworzymy katalog na konfigurację Dockera (jeśli nie istnieje):

sudo mkdir -p /etc/docker

Tworzenie pliku /etc/docker/daemon.json

Tworzymy i edytujemy plik konfiguracyjny Dockera:

sudo micro /etc/docker/daemon.json

W pliku umieszczamy (JSON bez komentarzy):

daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Ustawienia oznaczają:

  • max-size – maksymalny rozmiar pojedynczego pliku logu (np. 10m)
  • max-file – liczba plików logu trzymanych w rotacji (np. 3)

Łącznie daje to ok. 10m × 3 = 30 MB logów na kontener.


Restart usługi Docker

Restartujemy Dockera, aby zastosować konfigurację:

sudo systemctl restart docker

Weryfikacja ustawień logowania

Sprawdzamy, czy Docker używa właściwego drivera logów:

docker info --format '{{.LoggingDriver}}'

Oczekiwany wynik:

json-file

Weryfikacja konfiguracji dla kontenera

Opcjonalnie sprawdzamy ustawienia logowania dla konkretnego kontenera:

docker inspect --format '{{json .HostConfig.LogConfig}}' <container_name>

Zastosowanie do istniejących kontenerów

Ustawienia z /etc/docker/daemon.json stosują się w pełni do nowo tworzonych kontenerów. Dla istniejących kontenerów zwykle wystarcza ich odtworzenie w stacku:

cd /srv/docker/compose/<stack>
docker compose up -d

Jeśli chcemy mieć pewność, że kontenery zostaną zrecreate’owane:

cd /srv/docker/compose/<stack>
docker compose up -d --force-recreate

Uwagi utrzymaniowe

  • Rotację logów ustawiamy globalnie na hoście, aby objęła wszystkie kontenery
  • Po zmianie wartości max-size / max-file kontenery najlepiej odtworzyć w ramach stacków
  • W przypadku bardzo „gadatliwych” usług wartości max-size / max-file dopasowujemy do pojemności dysku i wymagań retencji