Docker/OSX kann den Grund für „kein freier Speicherplatz auf dem Gerät“ nicht finden

Docker/OSX kann den Grund für „kein freier Speicherplatz auf dem Gerät“ nicht finden

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 deviceund 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 dfals 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:

  1. docker inspectgibthttps://pastebin.com/53vLji1p

  2. docker ps -sgibt

%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)
<...>
  1. docker system dfgibt
%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:

  1. wie kann ich die tatsächlichen Statistiken zur Containernutzung sehen, damit ich anschließend einige Optimierungen vornehmen kann?

  2. 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 useddie configuredGröß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 -him Container und docker desktopin 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 shadowedsich 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:

Docker für MacOS-Datenträgereinstellungen

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 -iOption, 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.

verwandte Informationen