Speicherplatzproblem auf Docker Devmapper und CentOS7


103

Ich lerne Docker und verwende v1.11.0. Ich versuche, Hadoop zu installieren, aber Devmapper beschwert sich über freien Speicherplatz.

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

Ich habe alle meine Bilder gelöscht, aber das Problem besteht weiterhin:

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

und das ist meine Festplattenkonfiguration:

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

FRAGE: Wie kann ich den Speicherplatz freigeben?

Danke


1
Hängt dies auch mit Devicemapper bei nicht behebbaren Loopback-Speicherproblemen zusammen? github.com/docker/docker/issues/3182 "Devicemapper nicht für Produktionszwecke empfohlen". Entfernen Sie sich aus mehreren Gründen besser vom Devicemapper. Ich fand es einfach genug, zum Overlay-Speichertreiber zu wechseln, YMMV natürlich, aber hoffentlich nicht zu viel. 'rm -rf / var / lib / docker' ist beim Umschalten etwas optional, aber einfach und ich kann es nur empfehlen. projectatomic.io/blog/2015/06/…
gaoithe

1
Zu Ihrer Information, Sie können die Verwendung von Thin Pool-Festplatten mit " sudo lvs" sehen. Dies ist hilfreich, wenn Sie herausfinden möchten, wie viel Speicherplatz Sie zum Bereinigen benötigen (anhand der angegebenen Antworten).
Aaron D. Marasco

Antworten:


27

Sie können verwenden:

docker system prune -a -f --volumes

wo:

  • -a == entfernt alle nicht verwendeten Bilder
  • -f == Kraft
  • --volumes == beschneiden Sie Volumes.

Siehe: https://docs.docker.com/engine/reference/commandline/system_prune/#description

Als Randnotiz hatte ich viele Probleme, als ich den Devicemapper-Treiber in meiner Umgebung verwendete. Ich habe wie erwähnt geputzt, aber es gab noch andere Devicemapper-Probleme. Ich empfehle dringend, auf overlay2 umzusteigen, da fast alles vollständig gelöst ist.


1
Wir führen die Befehle regelmäßig in der Antwort von @ Cokoda-Raka aus, aber bei einem bestimmten Docker-Host war dieser Befehl erforderlich, wenn overaly2 eine erhebliche Menge an Speicherplatz verbrauchte, mehr als es hätte sein sollen. Ich denke, ich werde diesen Befehl auch zu unseren automatisierten Bereinigungsaufgaben hinzufügen.
StockB

1
Dies half auf RHEL 7 mit Docker 1.13.1. Nach dem Laufen docker container prune, docker image prune, docker volume prunehaben wir immer noch die devmapper / Thin Pool Fehler. Der obige Befehl funktionierte, räumte den erforderlichen Speicherplatz auf und machte einen Neustart des Dämons überflüssig.
Johnathan Elmore

167

Führen Sie einfach diese drei aus. RUNNING-Container müssen nicht entfernt werden.

  1. Bereinigung beendet Prozesse:

    docker rm $(docker ps -q -f status=exited)
    
  2. Bereinigende baumelnde Volumes:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. Bereinigende baumelnde Bilder:

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    

4
Ich habe es von hier gelernt: stackoverflow.com/questions/32723111/…
Cokorda Raka

19
Version 1.13 ermöglicht jetzt das Aufrufen von docker system prune docs.docker.com/engine/reference/commandline/system_prune
Vivek Kodira

1
Dies sollte wahrscheinlich die akzeptierte Antwort sein. Die andere Antwort kann möglicherweise mehr Container töten, als Sie töten möchten.
DigitalFiz

2
Diese Befehle sind sehr hilfreich, um die Festplatte des Computers zu bereinigen, haben jedoch das Problem mit dem Devicemapper und dem Speicherplatz nicht behoben.
Paulo Oliveira

4
Ich verstehe immer noch nicht, "was" diese Fehlermeldung bedeutet. Selbst wenn diese Befehle funktionieren, würde ich nicht vollständig verstehen, warum. Was ist "dünner Pool"? Und was hat das Beenden von Prozessen mit dem "Freigeben von Datenblöcken" zu tun?
Yiati
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.