So bereinigen Sie den von Docker belegten Speicherplatz

So bereinigen Sie den von Docker belegten Speicherplatz

Docker nimmt viel Platz ein. Immer wenn wir Container ausführen, Bilder abrufen, Anwendungen bereitstellen und unsere eigenen Bilder erstellen, wird unser Speicherplatz stark beansprucht.

Wenn Sie auch von diesem Problem betroffen sind, schauen wir uns an, wie Docker Speicherplatz nutzt und wie Sie ihn zurückgewinnen.

Der vom Docker belegte Speicherplatz kann mit dem folgenden Befehl angezeigt werden:

$ Docker-System df 

TYPE listet die vier von Docker verwendeten Datenträgertypen auf:

  • Bilder: Der von allen Bildern belegte Speicherplatz, einschließlich der heruntergeladenen und der lokal erstellten Bilder.
  • Container: Der von laufenden Containern belegte Speicherplatz, der den Speicherplatz der Lese-/Schreibebene jedes Containers angibt.
  • Lokale Volumes: Der Speicherplatz, in dem der Container lokale Datenvolumes bereitstellt.
  • Build-Cache: Während des Image-Erstellungsprozesses generierter Cache-Speicherplatz (nur bei Verwendung von BuildKit verfügbar, verfügbar nach Docker 18.09).

Die endgültige RECLAIMABLE Größe ist die wiederherstellbare Größe.

Sehen wir uns jeden dieser Typen an.

Container-Datenträgernutzung

Bei jeder Erstellung eines Containers werden einige Dateien und Verzeichnisse erstellt, zum Beispiel:

  • Verzeichnis /var/lib/docker/containers/ID . Wenn der Container den Standardprotokollmodus verwendet, werden alle seine Protokolle im JSON-Format in diesem Verzeichnis gespeichert.
  • Das Verzeichnis /var/lib/docker/overlay2 enthält die Lese-/Schreibebene des Containers. Wenn der Container sein eigenes Dateisystem zum Speichern von Daten verwendet, werden diese in dieses Verzeichnis geschrieben.

Jetzt starten wir mit einem völlig sauberen System und gehen davon aus, dass Docker gerade erst installiert wurde:

Zuerst starten wir einen NGINX-Container:

Wenn Sie jetzt den Befehl df ausführen, sehen Sie:

  • Ein Bild, 126 MB
  • Ein Container

Derzeit ist kein zurückgewinnbarer Speicherplatz vorhanden, da der Container ausgeführt wird und das Image verwendet wird.

Jetzt erstellen wir eine leere Datei mit 100 MB im Container:

$ docker exec -ti www \
 dd wenn=/dev/zero von=test.img bs=1024 Anzahl=0 suche=$[1024*100]

Überprüfen Sie den Platz noch einmal:

Sie können sehen, dass der vom Container belegte Speicherplatz zugenommen hat. Wo ist diese Datei auf dem lokalen Computer gespeichert?

Wie oben erwähnt, wird es in der Lese-/Schreibebene des Containers gespeichert.

Wenn der Container angehalten wird, kann der vom Container belegte Speicherplatz zurückgewonnen werden:

Wie recyceln? Durch das Löschen eines Containers wird der von der zugehörigen Lese-/Schreibebene belegte Speicherplatz gelöscht.

Alle gestoppten Container können Sie auch mit einem Klick löschen:

$ Docker-Container beschneiden 

Nach dem Löschen des Containers kann das Image auch wiederverwendet werden:

Der obige Befehl docker container prune löscht gestoppte Container. Wenn Sie alle Container löschen möchten (einschließlich gestoppter und laufender), können Sie die folgenden beiden Befehle verwenden:

$ docker rm -f $(docker ps -aq)

$ Docker-Container rm -f $(Docker-Container ls -aq)

Verwendung der Spiegelfestplatte

Einige Bilder sind unsichtbar:

  • Ein Unterbild ist ein Zwischenbild, auf das andere Bilder verweisen, und kann nicht gelöscht werden.
  • Ein angehaltenes Bild ist ein Bild, das nicht mehr verwendet wird und gelöscht werden kann.

Der folgende Befehl listet alle ausstehenden Bilder auf:

$ Docker-Image ls -f dangling=true 

Löschen Sie solche Bilder:

$ Docker-Image rm $(Docker-Image ls -f dangling=true -q)

oder:

$ Docker-Image beschneiden 

Wenn Sie alle Bilder löschen möchten, können Sie den folgenden Befehl verwenden:

$ Docker-Image rm $(Docker-Image ls -q)

Beachten Sie, dass von Containern verwendete Bilder nicht gelöscht werden können.

Datenträgernutzung von Datenträgern

Ein Datenvolumen ist ein Datenspeicher außerhalb des Container-eigenen Dateisystems.

Wenn die Anwendung im Container beispielsweise die Funktion zum Hochladen von Bildern hat, können die Bilder nach dem Hochladen nicht im Container gespeichert werden, da die Daten im Container gelöscht werden, wenn der Container stirbt. Daher müssen diese Bilder außerhalb des Containers, also im Datenvolumen, gespeichert werden.

Wir führen beispielsweise einen MongoDB-Container zum Testen aus und importieren jede Menge Testdaten. Diese Daten liegen nicht im Container, sondern im Datenvolumen, da das Datenvolumen im MongoDB-Dockerfile verwendet wird.

Nach Abschluss des Tests wird der MongoDB-Container gelöscht, die Testdaten sind jedoch noch vorhanden und wurden nicht gelöscht.

Löschen Sie das nicht mehr genutzte Datenvolumen:

$ Docker-Volumen rm $(Docker-Volumen ls -q)

oder:

$ Docker-Volume beschneiden 

Cache-Speicherplatz erstellen

Docker 18.09 führte BuildKit ein, das die Leistung, Sicherheit, Speicherverwaltung und andere Funktionen des Build-Prozesses verbessert.

Um den Build-Cache zu löschen, können Sie den folgenden Befehl verwenden:

$ Docker Builder beschneiden 

Reinigung mit einem Klick

Aus der obigen Beschreibung wissen wir, dass Container, Bilder und Datenträger alle den Unterbefehl prune bereitstellen, der uns dabei hilft, Speicherplatz freizugeben.

Tatsächlich gibt es auch auf der Docker-Systemebene einen Unterbefehl prune , mit dem ungenutzter Speicherplatz mit einem Klick gelöscht werden kann:

$ Docker-System beschneiden 

Es ist eine gute Angewohnheit, diesen Befehl regelmäßig auszuführen.

Übersetzt aus:

https://medium.com/better-programming/docker-tips-clean-up-your-local-machine-35f370a01a78

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:
  • Über Dockers Bereinigung des von Overlay2 belegten Speicherplatzes (getestet und wirksam)
  • Lösung zur Bereinigung des Docker-Festplattenspeichers
  • Lösen Sie das Problem des unzureichenden Docker-Festplattenspeichers
  • So analysieren und bereinigen Sie die Festplattenspeichernutzung von Docker
  • Lösung für das Problem, dass Docker den gesamten Speicherplatz einnimmt
  • Lösung für das Problem des unzureichenden Speicherplatzes und der Unzugänglichkeit durch Docker-Container

<<:  WeChat-Applet implementiert Taschenrechnerfunktion

>>:  MySQL etabliert eine effiziente Indexbeispielanalyse

Artikel empfehlen

HTML+CSS zum Erreichen eines Surround-Reflexionsladeeffekts

In diesem Artikel wird hauptsächlich die Implemen...

So leiten Sie über den Nginx-Lastausgleich zu https um

Kopieren Sie das Zertifikat und den Schlüssel im ...

MySQL-Joinpufferprinzip

Inhaltsverzeichnis 1. MySQL-Joinpuffer 2. JoinBuf...

Grundprinzipien des skalierbaren MySQL-Designs

Inhaltsverzeichnis Vorwort 1. Was ist Skalierbark...

Definition und Funktion des zoom:1-Attributs in CSS

Heute wurde ich gefragt, wozu das Zoom-Attribut i...

Beispielcode zur Implementierung eines Foto-Stacking-Effekts mit CSS

Ergebnisse erzielen Schritt 1. Ursprüngliche inde...

Mehrere Möglichkeiten zum Speichern von Bildern in einer MySQL-Datenbank

Normalerweise müssen die von Benutzern hochgelade...

Detaillierte Erläuterung des Zeitdarstellungsbeispiels des Linux-Zeitsubsystems

Vorwort Um zum Originalcode kompatibel zu sein, b...

So optimieren Sie die MySQL-Abfragegeschwindigkeit

In den vorherigen Kapiteln haben wir die Auswahl ...

Lösung für MySQL-Fehlercode 1862 Ihr Passwort ist abgelaufen

Der Blogger hat MySQL ein oder zwei Monate lang n...

Detaillierte Erläuterung des Linux-Befehls zur Änderung des Hostnamens

Linux-Befehl zum Ändern des Hostnamens 1. Wenn Si...