Bei der Verwendung von Docker kann es bei vielen Benutzern zu dem Problem kommen, dass nach dem Löschen des Docker-Images oder -Containers der belegte Speicherplatz nicht reduziert wurde und immer noch 100 % beträgt. Warum ist das so? Schauen wir genauer hin.
1. Grundlegende Verwendung von Docker
Bevor wir die Ursache des Problems verstehen, werfen wir einen kurzen Blick auf die grundlegende Verwendung von Docker.
Führen Sie den Docker-Container aus:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
wobei IMAGE der Name des auszuführenden Images ist, das über den Docker-Images-Befehl angezeigt werden kann
OPTIONEN können Folgendes enthalten:
-d gibt den Container an, der im Hintergrund ausgeführt werden soll;
-p gibt die Container-Port-Zuordnung an, das Format ist: Host-Port:Container-Port;
--name gibt den Containernamen an;
-v gibt den Mount-Punkt des Host-Verzeichnisses und des Container-Verzeichnisses an;
rm löscht den Container automatisch.
Docker-Container löschen:
docker rm CONTAINER [CONTAINER...]
wobei sich CONTAINER auf den Namen oder die ID des Containers bezieht, der über den Befehl docker ps -a angezeigt werden kann.
Docker-Image löschen:
docker rmi IMAGE [IMAGE...]
wobei sich IMAGE auf den Namen oder die ID des Images bezieht, das über den Docker-Images-Befehl angezeigt werden kann.
2. Problemanalyse
Bei Verwendung des obigen Befehls zum Löschen eines Docker-Containers oder -Images gibt es normalerweise zwei Situationen:
Löschen des Containers: Wenn wir den Docker-RM-CONTAINER-Befehl verwenden, um den Container zu löschen, führt Docker dies automatisch aus Löschen Sie das verwendete Dateisystem, da jeder Container ein eigenes, unabhängiges Dateisystem haben kann. Daher wird nach dem Löschen des Containers auch der von ihm belegte Speicherplatz freigegeben. - Ein Bild löschen: Wenn wir den Befehl docker rmi IMAGE verwenden, um ein Bild zu löschen, löscht Docker alle historischen Versionen des Bildes und der Zwischenebenen und behält dabei alle Inhalte bei, die von den Containern benötigt werden, die das Bild noch verwenden. Wenn ein Bild daher von mehreren Containern verwendet wurde, wird durch das Löschen des Bildes nicht der gesamte vom Bild belegte Speicherplatz freigegeben.
-
Basierend auf der obigen Situation können wir eine Schlussfolgerung ziehen: Das Löschen von Docker-Containern oder -Images garantiert nicht die sofortige Freigabe von Speicherplatz und erfordert eine manuelle Reinigung mit speziellen Tools.
3. Lösung
Docker verwendet beim Ausführen tatsächlich das Dateisystem des Host-Computers. Wenn der Docker-Container oder das Image gelöscht wird, müssen wir daher die auf dem Host-Computer verbleibenden Junk-Dateien manuell bereinigen disk Die Freigabe von Speicherplatz.
Das Folgende ist die spezifische Reinigungsmethode:
Bereinigen Sie die vom Container generierten Junk-Dateien.-
Im Docker-Container können einige temporäre Dateien oder Protokolldateien beibehalten werden. Wenn Sie den Container löschen, müssen diese Dateien daher beibehalten werden enthalten sein Löschen, damit es nicht zu viel Platz einnimmt.
Sie können es mit dem folgenden Befehl bereinigen:
docker ps -aq | Der entsprechende Container und alle zugehörigen Volumes.
Unbenutzte Images bereinigen
- Wenn wir den Container ausführen, lädt Docker das erforderliche Image aus dem offiziellen Repository oder anderen benutzerdefinierten Repositorys herunter und speichert das Backup lokal. Obwohl diese Backups weniger Platz beanspruchen, können sie bei einer großen Anzahl ungenutzter Images auch zu unzureichendem Speicherplatz führen.
Sie können nicht verwendete Bilder mit dem folgenden Befehl überprüfen:
docker images -q | 3 -h
Die Funktion dieses Befehls besteht darin, die IDs, Tags und Größen aller Bilder aufzulisten und sie nach Größe zu sortieren.
Mit dem folgenden Befehl können Sie alle inaktiven Bilder löschen:
docker images -qf dangling=true | xargs docker rmi
Die Funktion dieses Befehls besteht darin, alle nicht verwendeten Bilder zu finden und zu löschen.
Bereinigen Sie das Docker-Datenverzeichnis
- Wenn die beiden oben genannten Methoden schließlich nicht funktionieren, können Sie das Docker-Datenverzeichnis manuell bereinigen. Standardmäßig befindet sich das Docker-Datenverzeichnis unter /var/lib/docker/.
Sie können den folgenden Befehl verwenden, um das Verzeichnis zu bereinigen:
docker system prune -a -f
Die Funktion dieses Befehls ist: Löschen Sie alle nicht verwendeten Objekte, einschließlich nicht verwendeter Bilder, nicht verwendeter Daten und nicht verwendeter Build-Cache.
4. Zusammenfassung
Um bei der Verwendung von Docker Speicherplatz freizugeben, müssen wir manuell einige Junk-Dateien in den Containern, Bildern und Docker-Datenverzeichnissen bereinigen. Diese Dateien belegen nicht nur viel Speicherplatz, sondern auch Systemressourcen und beeinträchtigen die Systemleistung. Daher ist es unbedingt erforderlich, Docker-Junk-Dateien regelmäßig zu bereinigen.
Das obige ist der detaillierte Inhalt vonWarum wird die Datei im Docker gelöscht, aber die Festplatte ist immer noch 100 %?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!