So zeigen Sie Docker-Containerprotokolle an und bereinigen sie (getestet und effektiv)

So zeigen Sie Docker-Containerprotokolle an und bereinigen sie (getestet und effektiv)

1. Problem

Die Docker-Containerprotokolle führten dazu, dass der Speicherplatz auf der Hostfestplatte voll war. docker logs -f container_name hat viele knisternde Protokolle, die viel Platz beanspruchen. Nicht verwendete Protokolle können bereinigt werden.

2. Lösung

2.1 Docker-Container-Protokolle finden

Unter Linux werden Containerprotokolle im Allgemeinen in /var/lib/docker/containers/container_id/ gespeichert. Dateien mit der Endung json.log (Geschäftsprotokolle) sind sehr groß. Das Skript docker_log_size.sh zum Überprüfen der Größe jeder Protokolldatei lautet wie folgt:

#!/bin/sh

echo "======== Größe der Protokolldatei von Docker-Containern =========" 

Protokolle = $ (find /var/lib/docker/containers/ -name *-json.log) 

für die Anmeldung $logs 
    Tun 
       ls -lh $log  
    Erledigt 

# chmod +x docker_log_size.sh

# ./docker_log_size.sh

2.2 Docker-Container-Protokolle bereinigen (Symptome behandeln)

Wenn der Docker-Container ausgeführt wird, werden Sie nach dem Löschen des Protokolls mit rm -rf feststellen, dass der Speicherplatz über df -h nicht freigegeben wird. Der Grund hierfür liegt darin, dass in Linux- oder Unix-Systemen das Löschen von Dateien über rm -rf oder den Dateimanager dazu führt, dass die Verknüpfung dieser Dateien mit der Verzeichnisstruktur des Dateisystems aufgehoben wird. Wenn die Datei geöffnet ist (von einem Prozess verwendet wird), kann der Prozess die Datei weiterhin lesen und der Speicherplatz wird weiterhin belegt. Die richtige Vorgehensweise ist cat /dev/null > *-json.log. Natürlich können Sie es auch mit rm -rf löschen und Docker neu starten. Als nächstes stellen Sie ein Protokollbereinigungsskript clean_docker_log.sh bereit, der Inhalt ist wie folgt:

#!/bin/sh 

echo "======== Starten Sie die sauberen Docker-Container-Protokolle =========" 

Protokolle = $ (find /var/lib/docker/containers/ -name *-json.log) 

für die Anmeldung $logs 
    Tun 
        echo "Protokolle bereinigen: $log" 
        cat /dev/null > $log 
    Erledigt 

echo "======== Ende der Bereinigung der Docker-Container-Protokolle ========="
# chmod +x clean_docker_log.sh

# ./clean_docker_log.sh

Nach einer solchen Bereinigung wachsen die Containerprotokolle jedoch mit der Zeit wie Unkraut nach.

2.3 Festlegen der Protokollgröße des Docker-Containers (Grundursache)

  • Obergrenze der Protokollgröße für einen Containerdienst festlegen

Bei der obigen Methode wird die Protokolldatei früher oder später größer. Um das Problem grundlegend zu lösen, müssen Sie die Obergrenze der Protokollgröße des Containerdienstes begrenzen. Dies wird erreicht, indem die Option max-size des Containers docker-compose konfiguriert wird.

nginx: 
 Bild: nginx:1.12.1 
 Neustart: immer 
 Protokollierung: 
  Treiber: "JSON-Datei" 
  Optionen: 
   maximale Größe: „5 g“ 

Nach dem Neustart des Nginx-Containers ist die Größe seiner Protokolldatei auf 5 GB begrenzt, sodass Sie sich darüber keine Gedanken mehr machen müssen.

  • Globale Einstellungen

Erstellen Sie eine neue /etc/docker/daemon.json. Wenn sie bereits existiert, müssen Sie keine neue erstellen. Fügen Sie die Parameter log-dirver und log-opts wie unten gezeigt hinzu:

# vim /etc/docker/daemon.json

{
 "Registrierungsspiegel": ["http://f613ce8f.m.daocloud.io"],
 "log-driver": "json-Datei",
 "log-opts": {"max-size": "500 m", "max-file": "3"}
}

max-size=500m bedeutet, dass die Obergrenze einer Containerprotokollgröße 500 MB beträgt.

max-file=3 bedeutet, dass ein Container drei Protokolle hat, nämlich id+.json, id+1.json und id+2.json.

// Starten Sie den Docker-Daemon neu# systemctl daemon-reload

# systemctl Neustart Docker

Hinweis: Die eingestellte Loggröße gilt nur für neu erstellte Container.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Docker-Reinigungskiller/Docker-Overlay-Datei nimmt zu viel Speicherplatz ein
  • So bereinigen Sie von Docker generierte Junk-Dateien
  • So bereinigen Sie Docker-Ressourcen schnell
  • So analysieren und bereinigen Sie die Festplattenspeichernutzung von Docker
  • Sammlung von Docker-Bereinigungsbefehlen
  • Gängige Methoden und Probleme der Docker-Bereinigung

<<:  Beispiel für die Verwendung von Store in Vue3 zum Aufzeichnen der Bildlaufposition

>>:  MySql verwendet Skip-Name-Resolve, um das Problem langsamer externer Netzwerkverbindungen des Clients zu lösen

Artikel empfehlen

Ein umfassendes Verständnis der funktionalen Komponenten von Vue.js

Inhaltsverzeichnis Vorwort Funktionale React-Komp...

Spezifische Verwendung zusammengesetzter CSS-Selektoren

Kreuzungsauswahl Der Schnittpunktselektor besteht...

Lösung für das Versagen von Docker beim Freigeben von Ports

Heute bin ich auf eine sehr seltsame Situation ge...

Der Unterschied und die Einführung von ARGB, RGB und RGBA

ARGB ist ein Farbmodus, also der RGB-Farbmodus mi...

5 Lösungen für den CSS-Box-Zusammenbruch

Zunächst: Was ist ein Box-Collapse? Elemente, die...

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene In...

Eine kurze Diskussion über allgemeine Operationen von MySQL in cmd und Python

Umgebungskonfiguration 1: Installieren Sie MySQL ...

MySQL-Index für Anfänger

Vorwort Da die wichtigste Datenstruktur im MySQL-...