Lösung für den Fehler beim Aufrufen des Containers aufgrund vollen Docker-Speicherplatzes

Lösung für den Fehler beim Aufrufen des Containers aufgrund vollen Docker-Speicherplatzes

Da das Problem ziemlich plötzlich auftrat und das Geschäft drängte, hatte ich keine Zeit, Screenshots von der Szene zu machen, daher zeigen die Screenshots vor Ort später die normale Umgebung.

Gehen Sie am Montag zur Arbeit, melden Sie sich wie gewohnt beim Server an und geben Sie den Docker-Container ein

>>> docker exec -i -t xxx /bin/bash
Docker-Fehler: Kein Speicherplatz mehr auf dem Gerät

Kein Platz?

Ich dachte sofort daran, den Systemspeicher zu überprüfen.

>>> df -h
Verwendete Dateisystemgröße Verfügbare Nutzung% Eingebunden auf
devtmpfs 3,9 G 0 3,9 G 0 % /Entwickler
tmpfs 3,9 G 0 3,9 G 0 % /Entwickler/shm
tmpfs 3,9 G 984 K 3,9 G 1 % /Lauf
tmpfs 3,9 G 0 3,9 G 0 % /sys/fs/cgroup
/dev/vda1 50 G 50 G 0 G 100 % /
Overlay 50 G 5,9 G 41 G 13 % /var/lib/docker/overlay2/4d0941b78fa413f3b77111735e06045b41351748bcea7964205bcfbf9d4ec0b6/zusammengeführt
Overlay 50 G 5,9 G 41 G 13 % /var/lib/docker/overlay2/54a7a7b66d9c12d7e42158d177a6b67321f7da1f223b301e838e9bc109a2bda4/zusammengeführt
shm 64M 0 64M 0 % /var/lib/docker/containers/712f65baea85d898f6c948e7149f84f2f5eaf3b1934540603f32ab278f9acec4/mounts/shm
shm 64 M 0 64 M 0 % /var/lib/docker/containers/a5fa673086c8f46ba98fc4425b353ed2e12de3277a5fe2dc5b8b7affa63b4518/mounts/shm
Overlay 50 G 5,9 G 41 G 13 % /var/lib/docker/overlay2/7fbbc8a29119a1eaa1f212c50b75405a1f16fd68e3ae3949cc0c963d0727a9ab/zusammengeführt
shm 64 M 0 64 M 0 % /var/lib/docker/containers/011a83deceacecbacb4ef7eb06eb5b812babf9e83914a4fb33d4925cc1ad375b/mounts/shm
tmpfs 783M 0 783M 0 % /run/Benutzer/0

Es stellt sich heraus, dass das Stammverzeichnis voll ist

Mehr erfahren

>>> CD /
>>> du -h --max-depth=1
984K ./Ausführen
16K ./opt
13M ./Wurzel
4,0K ./Medien
du: kann nicht auf „./proc/4382/task/4382/fd/4“ zugreifen: Keine solche Datei oder kein solches Verzeichnis
du: kann nicht auf „./proc/4382/task/4382/fdinfo/4“ zugreifen: Keine solche Datei oder kein solches Verzeichnis
du: kann nicht auf „./proc/4382/fd/3“ zugreifen: Keine solche Datei oder kein solches Verzeichnis
du: kann nicht auf „./proc/4382/fdinfo/3“ zugreifen: Keine solche Datei oder kein solches Verzeichnis
0 ./proc
204M ./boot
12K ./redis
39 Mio. ./usw.
16K ./verloren+gefunden
4,0 K ./srv
0 ./sys
47G ./var
2,8 G ./usr
4,0K ./Monat
36 KB ./tmp
0 ./Entwickler
4,0K ./Startseite
50G .
>>> cd var
>>> du -h --max-depth=1
116 M ./Cache
8,0K ./leer
4.0K ./Spiele
4,0 KB ./opt
24K ./db
46G ./lib
4.0K ./Gopher
4,0 KB ./adm
4,0K ./Absturz
12K ./kerberos
4,0K ./bewahren
4,0K ./nis
16 KB ./tmp
4.0K ./Jahr
4,0K ./lokal
104K ./Spule
374 MB ./Protokoll
47G .
>>> cd lib
>>> du -h --max-depth=1
76K ./systemd
24K ./NetzwerkManager
4.0K ./abgestimmt
4.0K ./Spiele
248K ./Wolke
215M ./U/min
8.0K ./plymouth
46G ./Docker
248 KB ./containerd
4,0 KB ./dbus
4,0 KB ./initramfs
4.0K ./os-prober
8,0 KB ./rsyslog
24K ./alternativen
8,0 KB ./authconfig
12K ./zustandslos
4.0K ./Verschiedenes
4,0 KB ./ntp
8,0 KB ./dhclient
4.0K ./selinux
8.0K ./chrony
4,0K ./rpm-Status
12 Mio. ./lecker
8,0 KB ./postfix
28K ./polkit-1
4.0K ./Maschinen
8,0 KB ./logrotate
46G .
>>> CD-Docker
>>> du -h --max-depth=1
84K ./Netzwerk
108 KB ./Bausatz
4.0K ./Vertrauen
4,0K ./Laufzeiten
5,7 M ./Bild
42 G ./Volumes
24K ./Plugins
4,0 KB ./tmp
20.000 ./Erbauer
180.000 ./Container
3,3 G ./overlay2
4,0K ./Schwarm
46G .
>>> CD-Lautstärke
>>> du -h --max-depth=1
172K ./kudu_to_jdy_kudu_to_jdy
42G ./jdy_extensions_logs
748K ./bot_etl_bot_etl
42G .

Es stellte sich heraus, dass das Volumen „jdy_extensions_logs“ voll war, und dann fand ich den Codefehler.

Nachtrag:

Tatsächlich bietet Docker viele Befehle zum Verwalten von Container-Images, unter denen Docker System DF ein nützlicherer Befehl ist

# Docker-Dateisystemnutzung anzeigen >>> Docker-System df
TYP GESAMT AKTIV GRÖSSE WIEDERVERWENDBAR
Bilder 7 3 2,146 GB 693,2 MB (32 %)
Behälter 3 3 127,5 kB 0 B (0 %)
Lokale Volumes 3 3 1,511 MB 0 B (0 %)
Cache erstellen 0 0 0B 0B
# Speicherplatznutzung anzeigen >>> Docker-System df -v
Speicherplatznutzung für Bilder:
REPOSITORY-TAG BILD-ID ERSTELLTE GRÖSSE GEMEINSAM GRÖSSE EINZIGARTIGE GRÖSSE CONTAINER
jdy_extension 1.7 e3be3be9664a vor 15 Stunden 627,6 MB 73,86 MB 553,7 MB 1
<keine> <keine> 4b5825747ae9 vor 19 Stunden 74,02 MB 73,86 MB 158,8 kB 0
redis 6.2.1 f877e80bb9ef vor 2 Wochen 105,3 MB 0B 105,3 MB 0
kudu_to_jdy 2.9 888b72288bca vor 2 Wochen 538,1 MB 73,86 MB 464,3 MB 1
jdy_to_db 1.9 c345c4e15c1a vor 7 Monaten 587,7 MB 73,86 MB 513,9 MB 0
bot_etl 2.3 020d41691ec7 vor 7 Monaten 508,6 MB 73,86 MB 434,8 MB 1
Ubuntu 20.04 adafef2e596e vor 8 Monaten 73,86 MB 73,86 MB 0B 0
Platzbedarf der Container:
CONTAINER ID IMAGE BEFEHL LOKALE VOLUMES GRÖSSE ERSTELLT STATUS NAMEN
011a83deceac jdy_extension:1.7 "supervisord -n -c /…" 1 17,8 kB vor 15 Stunden Aktiv 15 Stunden jdy_extension_1.7
712f65baea85 kudu_to_jdy:2.9 "supervisord -n -c /…" 1 36,9 kB vor 2 Wochen Aktiv 45 Stunden kudu_to_jdy_2.9
a5fa673086c8 bot_etl:2.3 "supervisord -n -c /…" 1 72,8 kB vor 7 Monaten Aktiv 45 Stunden bot_etl_2.3
Speicherplatznutzung lokaler Datenträger:
VOLUMENNAME LINKS GRÖSSE
jdy_extensions_logs 1 658,5 kB
kudu_to_jdy_kudu_to_jdy 1 128kB
bot_etl_bot_etl 1 724kB
Build-Cache-Nutzung: 0B
CACHE ID CACHE TYP GRÖSSE ERSTELLT LETZTE VERWENDUNG VERWENDUNG GETEILT
# Löschen Sie alle ungenutzten Volumes
>>> Docker-Volume rm $(Docker-Volume ls -q)

Ergänzung: Notieren Sie einen Fall, in dem die Docker-Festplatte 100 % belegt

Beim Ausführen von „git pull origin master“ wird der folgende Fehler ausgegeben:

Fehler: RPC fehlgeschlagen; HTTP 500 curl 22 Die angeforderte URL hat den Fehler zurückgegeben: 500

fatal: die Gegenstelle hat unerwartet aufgelegt

Nach einer Suche auf Baidu sagten viele Leute, dass es an der Dateigrößenbeschränkung von Nginx liege. Nach der Überprüfung der Konfigurationsdatei stellte sich jedoch heraus, dass die Größenbeschränkung auf 500 MB festgelegt war. Dieser Grund sollte also nicht der Grund sein:

Server
{
  hören Sie 80;
  Servername localhost;
  Maximale Client-Body-Größe: 500 M;
  Standort / {
    Proxy_Redirect aus;
    Proxy_Set_Header Host $host;
    Proxy_Set_Header X-Real-IP $Remote_Addr;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://localhost:180;
  }
}

Überprüfen Sie dann mit df -h den Festplattenstatus und stellen Sie fest, dass die Data2-Festplatte zu 100 % voll ist (Docker ist hier gespeichert):

Durch die Verwendung von Docker System Prune -a wurde viel Speicherplatz freigegeben und das Problem war gelöst.

Hinweis: Mit dem obigen Befehl werden die folgenden Inhalte gelöscht

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

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • So beheben Sie den Startfehler des Docker-Containers
  • Beheben Sie das Problem, dass einige Konfigurationsdateien in /etc nach dem Neustart des Docker-Containers zurückgesetzt werden
  • Docker: Zeigen Sie den Mount-Verzeichnisvorgang des Containers an
  • docker run -v mountet Datenvolumes abnormal und der Containerstatus wird immer neu gestartet

<<:  Zusammenfassung der MySQL-Zeichensätze

>>:  Vue3.0 handgeschriebener Karusselleffekt

Artikel empfehlen

MySQL-Dateneinfügungsoptimierungsmethode concurrent_insert

Wenn ein Thread eine DELAYED-Anweisung für eine T...

Docker-Bereitstellungs- und Installationsschritte für Jenkins

Zuerst benötigen wir einen Server mit installiert...

So gehen Sie nach der MySQL-Tabellenpartitionierung problemlos online

Inhaltsverzeichnis Zweck der Tabelle Zum Beispiel...

Einige Vorschläge zur Lesbarkeit des Vue-Codes

Inhaltsverzeichnis 1. Nutzen Sie Komponenten sinn...

MySQL 5.7.12 Installations- und Konfigurations-Tutorial unter Mac OS 10.11

So installieren und konfigurieren Sie MySQL auf M...

Datenbankabfrageoptimierung: Unterabfrageoptimierung

1. Fall Nehmen Sie alle Mitarbeiter, die nicht Fi...

Mehrere Lösungen für domänenübergreifende Gründe in der Webentwicklung

Inhaltsverzeichnis Domänenübergreifende Gründe JS...

21 Best Practices zur MySQL-Standardisierung und -Optimierung!

Vorwort Jede gute Angewohnheit ist ein Schatz. Di...

Installieren Sie Linux mithilfe einer virtuellen VMware-Maschine (CentOS7-Image).

1. VMware herunterladen und installieren Verknüpf...

Zeigen Sie die vom Prozess in Linux belegte Portnummer an

Für Linux-Systemadministratoren ist es von entsch...

Was ist eine HTML-Datei? So öffnen Sie eine HTML-Datei

HTML steht für Hypertext Markup Language. Heutzut...