
Umgebungsversionen:
macos 10.14.4
docker server 18.09.2
docker desktop Version 2.0.0.3 (31259)
Im Container ist ein Fehler aufgetreten no space left on device
und ich kann nicht ermitteln, woher der Überlauf kommt.
Das Schlimmste ist, dass ich die tatsächliche Containergröße aus Sicht des Mutterhostsystems nicht bestimmen kann (info/inpsect/system df tools). Tatsächlich stimmen die Statistiken von Docker und Mutterhosts nicht überein :/
Ich habe einen Container mit folgenden DF-Statistiken darin:
root@31a71014ad95:/usr/local/app# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 63G 21G 40G 34% /
tmpfs 64M 0 64M 0% /dev
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
osxfs 234G 182G 48G 80% /shared_from_host
/dev/sda1 63G 21G 40G 34% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs 2.0G 0 2.0G 0% /sys/firmware
( shared_from_host
- ist ein gemeinsam genutztes Volume für die Integration mit dem Mutterhost)
Es sollte erwähnt werden, dass ich über die allgemeine Bilddateigröße unter macOS gelesen habe. Sie scheint in Ordnung zu sein und weit von der Standardgröße von 64 GB entfernt:
ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 coin staff 21G May 26 22:25 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Der Docker-Container enthält definitiv ein großes Unterverzeichnis:
root@31a71014ad95:/usr/local/app# du -hs ./*|grep CRISP
12G ./CRISPRCasFinder
Ich habe ps -s
, inspect
, system df
als empfohlene Methode zur Schätzung der Container-Festplattennutzungsstatistiken gesehen, aber ohne Erfolg. Alle zeigen keine tatsächlichen Werte an. Scheinbar verwende ich diese Tools falsch und interpretiere die Zahlen falsch.
Die Statistiken des Mutterhosts sehen folgendermaßen aus:
docker inspect
gibthttps://pastebin.com/53vLji1pdocker ps -s
gibt
%docker container ps -sa
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
31a71014ad95 nvm:nvm_tag "/bin/bash" 6 hours ago Exited (137) 23 minutes ago cr 3.52GB (virtual 5.44GB)
<...>
docker system df
gibt
%docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 8 6 5.52GB 3.021GB (54%)
Containers 6 0 3.541GB 3.541GB (100%)
Local Volumes 33 6 2.751GB 2.381GB (86%)
Build Cache 0 0 0B 0B
Keiner dieser Werte sieht nach Containernutzung mit du aus (siehe oben). Sind das die Werte, nach denen ich suchen sollte?
Das nützlichste und detaillierteste Beispiel, das ich gefunden habe, isthttps://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/
Aber es scheint, dass die Ausgabe in meiner aktuellen Docker-Version nicht mehr die Felder enthält, die der Autor für Illustrationen verwendet - keine „Basisgerätegröße“, keine „Gerätegröße“
Die Fragen lauten also:
wie kann ich die tatsächlichen Statistiken zur Containernutzung sehen, damit ich anschließend einige Optimierungen vornehmen kann?
wo befindet sich die Konfiguration der maximalen Container-Festplattengröße?
Danke schön!
AKTUALISIEREN
Ich habe versucht, die Docker-App neu zu starten, und alles endete mit einem schwerwiegenden Speicherplatzfehler -https://pastebin.com/twM3qN8N
Docker startet also momentan überhaupt nicht. Ok... ich habe auch ein sehr ähnliches Problem bei gh gefunden -https://github.com/docker/for-mac/issues/3529
Ich habe schon früher Probleme mit Fehlverhalten gesehen, bei denen das Löschen der qcow2-Datei eine Lösung war, aber es gab immer ein Platzproblem, wo used
die configured
Größen nahe beieinander lagen, und das Problem lag in der Größenanpassung. Aber es scheint, dass dieses Problem ein ähnliches Problem wie meines ist, Ursache des Problems: Die Größe der qcow2-Datei scheint groß genug zu sein.
Ich sehe, dass die temporäre Problemumgehung darin besteht, alle Daten zu löschen, hoffe aber, eine Alternative oder zumindest eine Erklärung zu den Kennzahlen für die Datenträgernutzung zu finden, bevor ich mit dem Löschen beginne.
AKTUALISIERUNG 2
Teilentscheidung ohne qcow klar, aber kein Verständnis
Ich habe weiterhin alle möglichen Artikel gelesen und nach dem Lesenhttp://phutchins.com/blog/2017/01/04/fixing-docker-no-space-left-on-device/
Und mir ist die seltsame 20-GB-Begrenzung aufgefallen, die 2017 Standard ist. Und ich dachte: Stellen wir uns vor, dass ich trotz der Meldungen von 64 GB df -h
im Container und docker desktop
in den UI-Einstellungen immer noch eine 20-GB-Begrenzung habe. Scheint das möglich?
Und qemu installiert und +5 GB zum Image hinzugefügt, wie im Artikel beschrieben:
%qemu-img resize ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 +5G
Und voilà, alles hat angefangen und funktioniert. Ich sehe immer noch die gleiche Größe für die QEMU-Datei:
%ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 usss staff 21G May 27 00:46 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
aber die Nutzung aus Sicht des Containers hat sich etwas geändert
root@31a71014ad95:/usr/local/app# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 68G 21G 45G 32% /
tmpfs 64M 0 64M 0% /dev
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
osxfs 234G 178G 55G 77% /shared_from_host
/dev/sda1 68G 21G 45G 32% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs 2.0G 0 2.0G 0% /sys/firmware
jetzt steht dort, dass 45 GB verfügbar sind (darüber waren es 40 GB).
Aber immerhin funktioniert jetzt alles, aber ich habe absolut kein Verständnis dafür, wo shadowed
sich der Verbrauch verbirgt.
Antwort1
Der Speicherplatz bei Desktop-Versionen von Docker kann durch die Festplatte begrenzt sein, die Sie der eingebetteten Docker-VM zuweisen. In dieser VM befinden sich die Bilder, Container, benannten Volumes und alle anderen Dateien, die nicht explizit von einer externen Quelle in die VM eingebunden wurden (z. B. das Verzeichnis /Users unter MacOS). Sie können die Einstellungen dieser VM in den Docker-Einstellungen anpassen:
Bildnachweis: Docker-Dokumentation
Weitere Einzelheiten erfahren Sie unter:https://docs.docker.com/docker-for-mac/space/
Ein wichtiger Hinweis zur Festplattennutzung: Ihnen können die Festplattenbytes ausgehen und Ihnen können auch die Inodes ausgehen. Beides führt zum selben Fehler. Verwenden Sie die df -i
Option, um Inodes zu überprüfen, z. B.:
df -h # to see disk free
df -hi # to see inodes free
Wenn Ihr Fehler auftritt, während ein Container ausgeführt wird, und Ihr Container dann gelöscht wird, ist es möglich, dass durch das Löschen des Containers dieser Speicherplatz freigegeben wird.