Docker verwendet den Prune-Befehl, um das Nicht-Image zu bereinigen

Docker verwendet den Prune-Befehl, um das Nicht-Image zu bereinigen

Die Entstehung und Verwirrung von Nicht-Bildern

Wir sehen gelegentlich keine Bilder (virtuelle Bilder), das liegt daran

  1. Während des Image-Erstellungsprozesses wurden viele Image-Erstellungen aufgrund von Skriptfehlern abgebrochen, was zu vielen Versionen mit dem Tag „None“ führte.
  2. Beim manuellen Erstellen eines Images wird kein Commit durchgeführt, sodass Junk-Images zurückbleiben
  3. Diese Bilder beanspruchen viel Speicherplatz und müssen gelöscht werden.

Wie unten gezeigt

root@instance-o70no2nw:~# Docker-Bilder -a
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
<keine> <keine> 867c2dc0031b vor 12 Stunden 465 MB
mytomcat 8.5.0 34c8c864d046 vor 12 Stunden 465 MB
Ubuntu 16.04 a3551444fc85 vor 2 Tagen 119 MB
mysql 8.0.16 d72169616e20 vor 4 Tagen 443 MB
mysql latest d72169616e20 vor 4 Tagen 443 MB
Tomcat aktuell 5a069ba3df4d vor 2 Wochen 465 MB

So bereinigen Sie None-Objekte

Docker verfolgt einen konservativen Ansatz zum Bereinigen nicht verwendeter Objekte (oft als „Garbage Collection“ bezeichnet), wie etwa Images, Container, Volumes und Netzwerke:
Diese Objekte werden normalerweise nicht gelöscht, es sei denn, Sie fordern Docker ausdrücklich dazu auf. Dies kann dazu führen, dass Docker zusätzlichen Speicherplatz verbraucht.
Docker stellt für jeden Objekttyp einen Prune-Befehl bereit.
Alternativ können Sie Docker System Prune verwenden, um mehrere Objekttypen gleichzeitig zu bereinigen. In diesem Thema wird die Verwendung dieser Bereinigungsbefehle erläutert.

Spiegel trimmen

Bereinigen Sie das Nicht-Bild (hängendes Bild).
Befehl: docker image prune
Standardmäßig bereinigt der Befehl „Docker Image Prune“ nur Vanity-Images (Images, die nicht markiert sind und auf die von keinen anderen Images verwiesen wird).

root@instance-o70no2nw:~# Docker-Image bereinigen
ACHTUNG! Dadurch werden alle hängenden Bilder entfernt.
Möchten Sie wirklich fortfahren? [j/N] j
Gesamter zurückgewonnener Speicherplatz: 0B

Bereinigen Sie Bilder, die nicht von Containern verwendet werden

Befehl: docker image prune -a

Standardmäßig werden Sie aufgefordert, fortzufahren. Um die Eingabeaufforderung zu umgehen, verwenden Sie das Flag -f oder --force.
Mit dem Flag --filter können Sie einschränken, welche Bilder mit einem Filterausdruck beschnitten werden. Um beispielsweise nur Bilder zu berücksichtigen, die vor 24 Stunden erstellt wurden:

$ Docker-Image prune -a --filter "bis = 24h"

Schnittbehälter

Das Stoppen eines Containers führt nicht automatisch zum Löschen des Containers, es sei denn, beim Starten des Containers wird das Flag --rm angegeben. Verwenden Sie den Befehl docker ps -a, um alle Container auf dem Docker-Host anzuzeigen, einschließlich angehaltener Container. Sie werden überrascht sein, wie viele Container es gibt, insbesondere in Entwicklungsumgebungen. Die beschreibbare Ebene eines angehaltenen Containers belegt weiterhin Speicherplatz. Um diese zu bereinigen, verwenden Sie den Befehl „Docker Container Prune“:

$ Docker-Container beschneiden

ACHTUNG! Dadurch werden alle gestoppten Container entfernt.
Möchten Sie wirklich fortfahren? [j/N] j

Standardmäßig werden Sie aufgefordert, fortzufahren. Um die Eingabeaufforderung zu umgehen, verwenden Sie das Flag -f oder --force.

Standardmäßig werden alle gestoppten Container gelöscht. Sie können das Flag --filter verwenden, um den Umfang einzuschränken. Beispielsweise löscht der folgende Befehl nur gestoppte Container, die vor mehr als 24 Stunden erstellt wurden:

Besäumrollen

Volumes können von einem oder mehreren Containern verwendet werden und belegen Speicherplatz auf dem Docker-Host. Volumes werden niemals automatisch gelöscht, da dadurch Daten zerstört würden.

$ Docker-Volume beschneiden

ACHTUNG! Dadurch werden alle Volumes entfernt, die nicht von mindestens einem Container verwendet werden.
Möchten Sie wirklich fortfahren? [j/N] j

Beschneiden des Netzwerks

Docker-Netzwerke benötigen nicht viel Speicherplatz, erstellen aber Iptables-Regeln, überbrücken Netzwerkgeräte und Routing-Tabelleneinträge. Um diese zu bereinigen, können Sie Docker Network Prune verwenden, um Netzwerke zu bereinigen, die nicht von Containern verwendet werden.

$ Docker-Netzwerk beschneiden

Alles zuschneiden

Mit dem Befehl „Docker System Prune“ können Sie Bilder, Container und Netzwerke schnell bereinigen. In Docker 17.06.0 und früheren Versionen ist das Beschneiden von Volumes problemlos möglich. In Docker 17.06.1 und höher müssen Sie zum Beschneiden von Volumes im Docker-System-Prune-Befehl explizit das Flag --volumes angeben.

$ Docker-System beschneiden

ACHTUNG! Dadurch wird Folgendes entfernt:
        - alle gestoppten Container
        - Alle Netzwerke, die nicht von mindestens einem Container verwendet werden
        - alle hängenden Bilder
        -alle Build-Cache
Möchten Sie wirklich fortfahren? [j/N] j

Wenn Sie Docker 17.06.1 oder höher verwenden und auch Volumes bereinigen möchten, verwenden Sie das Flag --volumes.

$ Docker-System beschneiden --Volumes

ACHTUNG! Dadurch wird Folgendes entfernt:
        - alle gestoppten Container
        - Alle Netzwerke, die nicht von mindestens einem Container verwendet werden
        - alle Volumes, die nicht von mindestens einem Container verwendet werden
        - alle hängenden Bilder
        -alle Build-Cache
Möchten Sie wirklich fortfahren? [j/N] j

Dies ist das Ende dieses Artikels über die Verwendung des Prune-Befehls zum Bereinigen des None-Images in Docker. Weitere Informationen zum Bereinigen des None-Images in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem, dass Vim-Befehle nicht in Docker-Containern verwendet werden können
  • Beispiele für das Schreiben von Docker-Compose-Konfigurationsdateien und die Verwendung von Befehlen
  • Grundlegende Einführung und Verwendung von Befehlen im Zusammenhang mit Docker-Container-Images
  • Verwendung des Docker-Systembefehlssatzes
  • Detaillierte Erläuterung der Docker-Basisbefehle und Anwendungsbeispiele

<<:  So verwenden Sie das Flex-Layout, um ein Scrollen des festen Inhaltsbereichs im Kopf zu erreichen

>>:  HTML-Endtag-Problem und W3C-Standard

Artikel empfehlen

Detaillierte Erklärung der Beziehung zwischen React und Redux

Inhaltsverzeichnis 1. Die Beziehung zwischen Redu...

Lernen Sie die Grundlagen der JavaScript-DOM-Operationen in einem Artikel

DOM-Konzepte DOM: Dokumentobjektmodell: Das Dokum...

Referenzen und Referenzdetails in Vue3

Der Editor teilt Ihnen auch die entsprechenden Pr...

So implementieren Sie Zeilenumbrüche im Texteingabebereich von Textarea

Wenn Sie den Text im Textarea-Eingabebereich umbre...

So entfernen Sie MySQL aus Ubuntu und installieren es neu

Löschen Sie zuerst MySQL: sudo apt-get remove mys...

Vue echarts realisiert horizontales Balkendiagramm

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

Verwendung und Unterschied von Js-Modulverpackungsexporten erfordern Import

Inhaltsverzeichnis 1. Commonjs-Exporte und erford...

So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

Auf alle Orchestrierungsdateien und Konfiguration...

Detaillierte Schritte zur Installation von MySql 5.7.21 unter Linux

Vorwort Die am häufigsten verwendete Datenbank in...