Mit dem Befehl docker prune können Sie selten genutzte Daten regelmäßig bereinigen.

Mit dem Befehl docker prune können Sie selten genutzte Daten regelmäßig bereinigen.

Szenario: Nachdem Sie die Docker-Engine lange Zeit verwendet haben, werden Sie feststellen, dass der Speicherplatz immer größer wird. Jetzt müssen Sie die nicht verwendeten Daten im Zusammenhang mit Docker löschen, um Speicherplatz freizugeben.

Schauen Sie sich zunächst den Docker-Systembefehl an

Das Docker-System verfügt derzeit über vier Unterbefehle, nämlich:

Docker-System df
Docker-Systemereignisse
Docker-Systeminformationen
Docker-System bereinigen

Einer der wichtigsten Befehle des Docker-Systems ist der Befehl „Docker System Prune“, der nicht verwendete Daten, einschließlich Bilddaten und angehaltener Container, bereinigt.

Siehe Docker-Systemhilfe

[root@localhost ~]# Docker-System --Hilfe

Verwendung: Docker-System-Befehl

Docker verwalten

Optionen:
      --help Druckverwendung

Befehle:
  df Zeigt die Docker-Festplattennutzung an
  events Erhalten Sie Echtzeitereignisse vom Server
  info Systemweite Informationen anzeigen
  prune Entfernen Sie nicht verwendete Daten

Führen Sie „docker system COMMAND --help“ aus, um weitere Informationen zu einem Befehl zu erhalten.

Docker-System df

Bietet einen Überblick über die gesamte Docker-Festplattennutzung, einschließlich Images, Containern und (lokalen) Volumes. So können wir jetzt jederzeit überprüfen, wie viele Ressourcen Docker verwendet.

[root@localhost ~]# Docker-System df
TYP GESAMT AKTIV GRÖSSE WIEDERVERWENDBAR
Bilder 10 6 2,652 GB 1,953 GB (73 %)
Container 6 6 6,922 MB 0 B (0 %)
Lokale Datenträger 0 0 0B 0B

Docker-System bereinigen

Wenn der vorherige Befehl zeigt, dass Docker zu viel Speicherplatz beansprucht hat, beginnen wir mit der Bereinigung. Es gibt einen Befehl, der alles erledigt:

[root@localhost ~]# Docker-System bereinigen
ACHTUNG! Dadurch wird Folgendes entfernt:
        - alle angehaltenen Container # Angehaltene Container bereinigen - alle Netzwerke, die nicht von mindestens einem Container verwendet werden # Nicht verwendete Netzwerke bereinigen - alle hängenden Bilder # Abgebrochene Bilder bereinigen - der gesamte Build-Cache # Den Build-Cache bereinigen Möchten Sie wirklich fortfahren? [j/N] j
Gesamter zurückgewonnener Speicherplatz: 0B

Laut Warnmeldung löscht dieser Befehl alle geschlossenen Container und hängenden Bilder. Im Beispiel hat das Bild, das drei zufällige 1-GB-Dateien enthält, den Namen „occuped:“, wobei es sich um ein hängendes Bild handelt und es gelöscht wird. Gleichzeitig werden alle Zwischenbilder gelöscht.

Gehen Sie noch einen Schritt weiter und verwenden Sie die Option -a, um eine gründlichere Bereinigung durchzuführen. Zu diesem Zeitpunkt werden wir schwerwiegendere WARNHINWEISE sehen:

$ Docker-System beschneiden -a
ACHTUNG! Dadurch wird Folgendes entfernt:
        - alle gestoppten Container
        - alle Volumes, die nicht von mindestens einem Container verwendet werden
        - Alle Netzwerke, die nicht von mindestens einem Container verwendet werden
        - alle Bilder, denen nicht mindestens ein Container zugeordnet ist
Möchten Sie wirklich fortfahren? [j/N] j
Gelöschte Bilder:
ungetaggt: test:latest
gelöscht: sha256:c515ebfa2...
gelöscht: sha256:07302c011...
gelöscht: sha256:37c0c6474...
gelöscht: sha256:5cc2b6bc4...
gelöscht: sha256:b283b9c35...
gelöscht: sha256:8a8b9bd8b...
unmarkiert: alpin:latest
ungetaggt: alpine@sha256:58e1a1bb75db1...
gelöscht: sha256:4a415e366...
gelöscht: sha256:23b9c7b43...
Insgesamt zurückgewonnener Speicherplatz: 2,151 GB

Dieser Befehl bereinigt das gesamte System und behält nur die Images, Container, Volumes und Netzwerke bei, die tatsächlich verwendet werden. Sie müssen also besonders vorsichtig sein. Beispielsweise können wir den Befehl prune -a nicht in einer Produktionsumgebung ausführen, da manchmal einige Sicherungsimages (für Backup, Rollback usw.) benötigt werden. Wenn diese Images gelöscht werden, müssen sie beim Ausführen des Containers erneut heruntergeladen werden.

An dieser Stelle werden alle Bilder gelöscht, die nicht an Container gebunden sind. Da der erste Prune-Befehl alle Container entfernt, werden alle Bilder (die an keinen Container gebunden sind) entfernt.

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

Normalerweise können wir die geplante Aufgabe löschen

In meinem Szenario beispielsweise nimmt das Image viel Speicherplatz ein, daher plane ich eine Aufgabe zum Löschen von Images um 1 Uhr morgens jeden Tag. Dabei werden alle Images gelöscht, die länger als 72 Stunden nicht verwendet wurden:

[root@Entwicklungsserver]# crontab -e
0 1 * * * Docker-Image bereinigen -a --force --filter "bis=72h"

Docker-Systeminformationen (Docker-Informationen)

Ich glaube, jeder kennt die Abkürzung dieses Befehls Docker Info

[root@localhost ~]# Docker-Systeminformationen
Behälter: 6
 Laufen: 6
 Pausiert: 0
 Angehalten: 0
Bilder: 49
Serverversion: 17.06.2-ce
Speichertreiber: Overlay
 Unterstützendes Dateisystem: xfs
 Unterstützt d_type: true
Protokollierungstreiber: JSON-Datei
Cgroup-Treiber: cgroupfs
Plugins: 
 Lautstärke: lokal
 Netzwerk: Bridge-Host Macvlan Null-Overlay
 Protokoll: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Schwarm: inaktiv
Laufzeiten: runc
Standardlaufzeit: runc
Binärdatei initialisieren: docker-init
containerd-Version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
Runc-Version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
Init-Version: 949e6fa
Sicherheitsoptionen:
 sicherheitskomp
  Profil: Standard
Kernel-Version: 3.10.0-514.26.2.el7.x86_64
Betriebssystem: CentOS Linux 7 (Core)
Betriebssystemtyp: Linux
Architektur: x86_64
CPUs: 24
Gesamtspeicher: 31,21 GiB
Name: localhost.localdomain
ID: YTL2:6RWX:IZK6:X4XC:XKMO:WVXD:LXPR:E5GN:GEJB:WIUX:L5YH:PDFB
Docker-Stammverzeichnis: /var/lib/docker
Debug-Modus (Client): false
Debug-Modus (Server): false
Registrierung: https://index.docker.io/v1/
Experimentell: falsch
Unsichere Register:
 127.0.0.0/8
Registrierungsspiegel:
 http://9zkjjecg.mirror.aliyuncs.com/
 https://docker.mirrors.ustc.edu.cn/
Live-Wiederherstellung aktiviert: false

Detaillierte Erklärung

siehe:

Docker-System - ein neuer Befehlssatz

Docker bereinigt kein Image mit dem Prune-Befehl

Dies ist das Ende dieses Artikels über die Verwendung des Docker-Prune-Befehls zum Bereinigen selten verwendeter Daten. Weitere Informationen zur Verwendung des Docker-Prune-Befehls zum Bereinigen selten verwendeter Daten 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:
  • So bereinigen Sie regelmäßig private Docker-Server-Images

<<:  Einfaches Verständnis und Beispiele für MySQL Index Pushdown (ICP)

>>:  Verlieben Sie sich in die einfachen CSS-Details, obwohl unbedeutend, können die Effizienz verbessern

Artikel empfehlen

So verwenden Sie Node zum Implementieren des statischen Datei-Cachings

Inhaltsverzeichnis Cache Klassifizierung des Cach...

Tutorial zur Installation von JDK und Tomcat unter Linux CentOS

Laden Sie zuerst JDK herunter. Hier verwenden wir...

Stellen Sie IE8 so ein, dass Code im IE7-Stil verwendet wird

<meta http-equiv="x-ua-kompatibel" co...

Implementierungscode für den MySQL-Protokolltrigger

SQL-Anweisung DROP-TRIGGER WENN EXISTIERT sys_men...

Detailliertes Installationstutorial für MySQL 5.7.11 unter Win7

Betriebssystem: Win7 64-Bit Ultimate Edition Komp...

Canvas zeichnet Rubbellos-Effekt

In diesem Artikel wird der spezifische Code zum Z...

So fügen Sie eine Festplatte in Vmware hinzu: Erweitern Sie die Festplatte

In diesem Artikel wird beschrieben, wie Sie eine ...

Detaillierte Erläuterung der Anwendungsszenarien von Filtern in Vue

filter werden im Allgemeinen verwendet, um bestim...

Erste Schritte Tutorial für Anfänger: Domänennamenauflösung und Bindung

Wie können Sie also nach der Registrierung eines ...

Beispiel für die Verwendung von JS, um zu bestimmen, ob ein Element ein Array ist

Hier sind die Arten von Daten, die überprüft werd...

W3C Tutorial (14): W3C RDF und OWL Aktivitäten

RDF und OWL sind zwei wichtige semantische Webtec...