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

Installieren Sie ein CentOS-System basierend auf WindowsX Hyper-V

Derzeit nutzen die meisten Linux-Benutzer entwede...

Ein Leitfaden zur Optimierung leistungsstarker Websites

Goldene Regeln der Leistung: Nur 10 bis 20 % der ...

Zählen Sie die Listen-Tags in HTML

1. <dl> definiert eine Liste, <dt> de...

Detaillierte Erklärung des Json-Formats

Inhaltsverzeichnis Ein JSON basiert auf zwei Stru...

Detaillierte Erläuterung der Verwendung von MySQL sql_mode

Inhaltsverzeichnis Vorwort sql_mode erklärt Die w...

Verwendung des Linux-Befehls gzip

1. Befehlseinführung Der Befehl gzip (GNU zip) wi...

calc(), um einen Vollbild-Hintergrundinhalt mit fester Breite zu erreichen

In den letzten Jahren gab es im Webdesign einen T...

react+antd.3x implementiert IP-Eingabefeld

In diesem Artikel wird der spezifische Code von r...

Detaillierte Erklärung zu Javascript-Dateien und Blobs

Inhaltsverzeichnis Datei() Grammatik Parameter Be...

So schreiben Sie schönen HTML-Code

So sieht schöner HTML-Code aus. So schreiben Sie ...

Detailliertes Tutorial zur Installation von Anaconda3 auf Ubuntu 18.04

Anaconda bezeichnet eine Open-Source-Python-Distr...

Navigationsdesign und Informationsarchitektur

<br />Wenn wir über Navigation sprechen, geh...