Docker bereinigen Speicherplatz

Bereinigen Sie den von Docker belegten Speicherplatz

        </h1>
        <div class="clear"></div>
        <div class="postBody">

Docker nimmt viel Speicherplatz ein. Immer wenn wir Container ausführen, Images abrufen, Anwendungen bereitstellen und eigene Images erstellen, wird unser Speicherplatz stark beansprucht.
Wenn Sie ebenfalls von diesem Problem betroffen sind, schauen wir uns an, wie Docker Speicherplatz verwendet und wie dieser recycelt wird.
Der vom Docker belegte Platz kann mit dem folgenden Befehl angezeigt werden:

$ docker system df

TYPE listet 4 Arten von Festplatten auf, die von Docker verwendet werden:

  • Bilder : Der Platz, den alle Bilder einnehmen, einschließlich der extrahierten und lokal erstellten Bilder.

  • Container : Der von laufenden Containern belegte Platz, der den Platz der Lese- / Schreibschicht jedes Containers darstellt.

  • Lokale Volumes : Platz für Container zum Mounten lokaler Datenvolumes.

  • Build-Cache : Cache-Speicherplatz, der während des Image-Erstellungsprozesses generiert wird (nur verfügbar, wenn BuildKit verwendet wird, verfügbar nach Docker 18.09).
    Der letzte RECLAIMABLE ist die recycelbare Größe.
    Schauen wir uns diese Typen separat an.
    Verwendung der Containerfestplatte
    Jedes Mal, wenn ein Container erstellt wird, werden einige Dateien und Verzeichnisse erstellt, zum Beispiel:

  • Verzeichnis / var / lib / docker / container / 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- / Schreibschicht des Containers. Wenn der Container zum Speichern von Daten ein eigenes Dateisystem verwendet, wird es in dieses Verzeichnis geschrieben.
    Jetzt beginnen wir mit einem vollständig sauberen System, vorausgesetzt, Docker wurde gerade installiert:

    Zuerst starten wir einen NGINX-Container:

Nachdem Sie den Befehl df ausgeführt haben, sehen Sie:
einen Spiegel mit 126 MB

Ein Container

Derzeit ist kein Speicherplatz mehr verfügbar, da der Container ausgeführt wird und das Image verwendet wird.
Jetzt erstellen wir eine 100 MB leere Datei im Container:

$ docker exec -ti www \
  dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

Überprüfen Sie den Platz erneut:

Sie können sehen, dass der vom Container belegte Speicherplatz vergrößert wurde. Wo wird diese Datei auf diesem Computer gespeichert?

Wie oben erwähnt, wird es in der Lese- / Schreibschicht des Containers gespeichert.
Wenn der Container angehalten wird, kann der vom Container belegte Platz recycelt werden:

Wie recyceln? Wenn ein Container gelöscht wird, wird der von der zugehörigen Lese- / Schreibschicht belegte Speicherplatz gelöscht.
Sie können auch alle gestoppten Container mit einem Klick löschen:

$ docker container prune

Nach dem Löschen des Containers kann das Bild auch recycelt werden:

Der obige Docker-Container-Bereinigungsbefehl dient zum Löschen des gestoppten Containers. Wenn Sie alle Container löschen möchten (einschließlich gestoppt und ausgeführt), können Sie die folgenden zwei Befehle verwenden:

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

Spiegeln Sie die Datenträgernutzung

Einige Bilder sind unsichtbar:

  • Ein Unterspiegel ist ein Zwischenspiegel, auf den von anderen Spiegeln verwiesen wird und der nicht gelöscht werden kann.

  • Der Spiegel im angehaltenen Zustand, dh der Spiegel, der nicht mehr verwendet wird, kann gelöscht werden.
    Der folgende Befehl listet alle angehaltenen Spiegel auf:

$ docker image ls -f dangling=true

Löschen Sie solche Spiegel:

$ docker image rm $(docker image ls -f dangling=true -q)
或者:
$ docker image prune

Wenn Sie alle Spiegel löschen möchten, können Sie den folgenden Befehl verwenden:
do c k e r i m a ge r mdockerimagerm (Docker-Image ls -q)
Beachten Sie, dass das vom Container verwendeteImagenicht gelöscht werden kann.

Datenträger-Datenträgerverwendung

Das Datenvolumen ist der Datenspeicher außerhalb des Dateisystems des Containers.
Beispielsweise hat die Anwendung im Container die Funktion, Bilder hochzuladen. Nach dem Hochladen darf sie nicht im Container gespeichert werden, da die Daten im Container gelöscht werden, wenn der Container stirbt. Daher sollten diese Bilder außerhalb des Containers gespeichert werden, dh Daten Lautstärke.
Zum Beispiel haben wir einen MongoDB-Container zum Testen ausgeführt und viele Testdaten importiert. Diese Daten befinden sich nicht im Container, sondern im Datenvolumen, da das Datenvolumen in der MongoDB-Docker-Datei verwendet wird.
Nach Abschluss des Tests wurde der MongoDB-Container gelöscht, die Testdaten waren jedoch noch vorhanden und wurden nicht gelöscht.

Löschen Sie nicht mehr verwendete Datenmengen:

$ docker volume rm $(docker volume ls -q)
或者:
$ docker volume prune

Erstellen Sie die Verwendung der Cache-Festplatte

Mit Docker 18.09 wurde BuildKit eingeführt, das die Leistung, Sicherheit, Speicherverwaltung und andere Funktionen des Erstellungsprozesses verbessert.
Mit dem Befehl können Sie den Build-Cache löschen:

$ docker builder prune

Reinigung mit einem Klick

Durch die obigen Anweisungen wissen wir, dass der Container, der Spiegel und das Datenvolumen den Unterbefehl prune bereitstellen, um Speicherplatz zurückzugewinnen.
Tatsächlich gibt es auch den Unterbefehl prune auf Docker-Systemebene, mit dem nutzloser Speicherplatz mit einem Klick aufgeräumt werden kann:

$ docker system prune

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

Veröffentlicht 63 Originalartikel · Gelobt 7 · Aufrufe 3396

Ich denke du magst

Origin blog.csdn.net/weixin_44523062/article/details/105381806
Empfohlen
Rangfolge