Ich kann sehen, dass Docker 12 GB meines Dateisystems benötigt:
2.7G /var/lib/docker/vfs/dir
2.7G /var/lib/docker/vfs
2.8G /var/lib/docker/devicemapper/mnt
6.3G /var/lib/docker/devicemapper/devicemapper
9.1G /var/lib/docker/devicemapper
12G /var/lib/docker
Aber woher weiß ich, wie dies auf die Container verteilt ist?
Ich habe versucht, durch Ausführen (der neue Befehl v1.3) eine Verbindung zu den Containern herzustellen.
docker exec -it <container_name> bash
und dann 'df -h' ausführen, um die Festplattennutzung zu analysieren. Es scheint zu funktionieren, aber nicht mit Containern, die "Volumes-from" verwenden.
Zum Beispiel verwende ich für MongoDB einen Nur-Daten-Container namens 'Mongo-Daten'.
Wenn ich ausgeführt werde docker run -it --volumes-from mongo-data busybox
und dann df -h
im Container, heißt es, dass das Dateisystem, auf dem /data/db
(mein Nur-Mongo-Daten-Datencontainer) gemountet ist, 11,3 G verwendet, aber wenn ich dies tue du -h /data/db
, heißt es, dass es nur 2,1 G verwendet.
Wie analysiere ich die Verwendung eines Containers / Datenträgers? Oder wie finde ich in meinem Fall die Containergröße "Mongo-Daten" heraus?
quelle
docker-squash
Dienstprogramm von Jason Wilder empfehlen . Erhalten Sie es von GitHub hier: github.com/jwilder/docker-squashAntworten:
Um die Dateigröße Ihrer Container anzuzeigen, können Sie das folgende
--size
Argument verwendendocker ps
:quelle
docker ps -s
keine Protokolle berücksichtigt werden, die in / var / lib / docker / gespeichert sind.27.2MB (virtual 173MB)
ist der Unterschied zwischen ihnen?Nach 1.13.0 enthält Docker einen neuen Befehl
docker system df
zum Anzeigen der Docker- Datenträgerverwendung.So zeigen Sie detailliertere Informationen zur Speicherplatznutzung an:
quelle
docker system df --verbose > docker.stats-2019-07-18.log
Dies als Antwort posten, da meine obigen Kommentare ausgeblendet wurden:
Listen Sie die Größe eines Containers auf:
Listen Sie die Größen der Volumina eines Containers auf:
Bearbeiten: Listet alle Größen und Volumina der laufenden Container auf:
HINWEIS: Ändern Sie 'devicemapper' entsprechend Ihrem Docker-Dateisystem (z. B. 'aufs').
quelle
/var/lib/docker/devicemapper: No such file or directory
. Irgendeine Idee, wo der Devicemapper auf einem Mac gespeichert ist?du
Befehl in Ihrer boot2docker-Host-VM ausführen. Der Befehl kann auch fehlschlagen, wenn Sieaufs
anstelle von Device Mapper verwenden.Der Volume-Teil hat nicht mehr funktioniert. Wenn also jemand interessiert ist, ändere ich einfach das obige Skript ein wenig:
quelle
(Diese Antwort ist nicht nützlich, aber lassen Sie sie hier, da einige der Kommentare sein können)
docker images
zeigt die 'virtuelle Größe' an, dh wie viel insgesamt einschließlich aller unteren Ebenen. Also einige Doppelzählungen, wenn Sie Container haben, die das gleiche Basis-Image haben.Dokumentation
quelle
Ich benutze
docker stats $(docker ps --format={{.Names}}) --no-stream
, um zu bekommen:quelle
Sie können verwenden
um zu sehen, wie die Bildgröße auf die verschiedenen Unterkomponenten verteilt wird.
quelle
Beachten Sie, dass
docker ps --size
dies ein teurer Befehl sein kann, dessen Ausführung mehr als ein paar Minuten dauert. Gleiches gilt für Containerlisten-API-Anfragen mitsize=1
. Es ist besser, es nicht zu oft auszuführen.Schauen Sie sich die von uns kompilierten Alternativen an , einschließlich der
du -hs
Option für das Docker-Verzeichnis für persistente Volumes.quelle
Verbesserung der Antwort von Maxime:
docker ps --size
Sie werden so etwas sehen:
Beim Starten eines Containers wird das Image, von dem aus der Container gestartet wird, schreibgeschützt (virtuell) bereitgestellt .
Darüber hinaus wird eine beschreibbare Ebene bereitgestellt, in die alle am Container vorgenommenen Änderungen geschrieben werden.
Die virtuelle Größe (183 MB im Beispiel) wird also nur einmal verwendet, unabhängig davon, wie viele Container von demselben Image aus gestartet werden. Ich kann 1 oder tausend Container starten. Es wird kein zusätzlicher Speicherplatz verwendet .
Die "Größe" (im Beispiel 2B) ist jedoch pro Container eindeutig, sodass der gesamte auf der Festplatte verwendete Speicherplatz wie folgt ist:
183 MB + 5B + 2B
Beachten Sie, dass die angezeigte Größe nicht den gesamten für einen Container verwendeten Speicherplatz enthält.
Dinge, die derzeit nicht enthalten sind, sind:
- Volumes
- Swapping
- Checkpoints
- Speicherplatz für vom Container generierte Protokolldateien
https://github.com/docker/docker.github.io/issues/1520#issuecomment-305179362
quelle