Der Kollege reagierte, dass das System sich nicht in die Testumgebung einloggen konnte, überprüfte die Überwachung entschlossen und stellte fest, dass der Serviceport offen war, meldete sich am Server an, um die Festplattennutzung zu überprüfen, und stellte fest, dass das auf einer bestimmte Festplatte montierte Verzeichnis voll war, wie in der untenstehenden Abbildung gezeigt:
Die Festplatte ist zu 100 % die von der Docker-Anwendung verwendete Festplatte, und zunächst wird vermutet, dass die Unfähigkeit, Logdateien zu schreiben, das Modul daran hindert, Dienste für die Außenwelt bereitzustellen.
Suche nach großen Dateien und finde sie schließlich im Unterverzeichnis /var/lib/docker/containers/Eine bestimmte json.log Datei nimmt 30 GB in Anspruch。
Reinigung laufender Containerstämme (Symptombehandlung)
Damit der Behälter sofort normal serviert werden kann. Temporäre Lösung: Solche Dateien schnell bereinigen, Festplattenspeicher freimachen, das Skript lautet wie folgt:
Wenn der Docker-Container läuft, stellt man nach dem Löschen der Logs mit rm -rf fest, dass durch df -h kein Speicherplatz frei wird. Der Grund ist, dass auf Linux- oder Unix-Systemen das Löschen einer Datei über rm -rf oder einen Dateimanager sie von der Verzeichnisstruktur des Dateisystems entkoppelt. Wenn die Datei geöffnet wird (und ein Prozess im Einsatz ist), kann der Prozess die Datei weiterhin lesen und der Speicherplatz wird ständig belegt. Die korrekte Pose ist cat /dev/null > *-json.log, und natürlich kannst du docker auch nach dem Entfernen per rm -rf neu starten.
Bemerkung:Erstelle ein neues Skript im Verzeichnis der freien Festplatte, ansonsten kann das Skript nicht normal erstellt werden。
Einstellung der Loggröße des Docker-Containers (Wurzelursache)
Setzen Sie die maximale Loggröße eines Containerdienstes ein und fügen Sie beim Start des Containers einen Parameter hinzu, um die Loggröße des Containers festzulegen, zum Beispiel:
max-size=500m, was bedeutet, dass die obere Grenze der Holzgröße eines Containers 500m beträgt, max-file=3, was bedeutet, dass ein Container drei Logs hat, nämlich id+.json, id+1.json und id+2.json.
Docker ist auf eine neue Festplatte migriert
Docker-bezogene Daten befinden sich auf der Systemfestplatte, die Systemfestplatte ist nur 50 GB groß und die Datenfestplatte ist 100 GB groß – wie kann man die vorhandenen docker-Daten auf die Datenfestplatte übertragen?
Für docker, der mit der CentOS-Systemmethode yum installiert wird, sollte das Standardinstallationsverzeichnis lauten: /var/lib/docker
Docker-Version < v17.05.0
Da dockerd den Image- und Containerspeicherpfad über den Parametergraphen angeben kann, wie –graph=/var/lib/docker, müssen wir nur die Konfigurationsdatei ändern, um die Startparameter anzugeben.
Die Konfigurationsdatei von Docker kann die meisten Hintergrundprozessparameter festlegen, und der Speicherort in jedem Betriebssystem ist inkonsistent in Ubuntu: /etc/default/docker und in CentOS: /etc/sysconfig/docker.
Docker-Version >= v17.05.0
Da Docker die Graph-Funktion in dieser Version offiziell eingestellt hat, kann man, wenn man die Docker-Version >= v17.05.0 auf dem Rechner installiert hat, das Standardinstallations- (Speicher-)Verzeichnis von Docker nicht durch die Angabe des Graph-Parameters in der /etc/default/docker-Konfigurationsdatei ändern.
Es gibt weitere Möglichkeiten, wie die neue Version von Docker unser Ziel erreichen kann, das Installations- (Speicher-)Verzeichnis zu ändern: indem sie (neue) /etc/docker/daemon.json modifiziert, um den Wert des Datenroot-Parameters zu spezifizieren.
Docker-Daemon-Verzeichniskonfiguration:Der Hyperlink-Login ist sichtbar.
Migrationsvorbereitung: Alle Containeranwendungen stoppen und Docker-Dienste stoppen (systemctl stop docker).
Erstelle ein neues Verzeichnis in /home/software mit folgendem Befehl:
Migrate das /var/lib/docker-Verzeichnis in das /home/software/docker-Verzeichnis (es wird empfohlen, es zu kopieren und dann die /var/lib/docker-Datei zu löschen, wenn alles in Ordnung ist), der Befehl lautet wie folgt:
Beim KopierenStelle sicher, dass du den Parameter -a hinzufügst, sonst funktionieren manche Container nicht richtig!!!!!
Sehen Sie alle Soft-Verbindungen und Dateipunkte im aktuellen Verzeichnis mit folgendem Befehl an:
Ändern Sie die Datei /etc/docker/daemon.json mit folgendem Befehl:
Speichere und starte dann den Docker-Service mit folgendem Befehl:
Starte den Container, die Tests laufen alle normal, und schließlich,Lösche den /var/lib/docker-Ordner。
(Ende)
|