problème d'espace sur docker devmapper et CentOS7

103

J'apprends docker et j'utilise la v1.11.0 J'essaye d'installer hadoop mais devmapper se plaint de l'espace disque disponible?

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

J'ai supprimé toutes mes images mais le problème persiste:

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

et voici ma configuration de disque:

[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

QUESTION: Comment puis-je libérer de l'espace disque?

Merci

Manuel Sopena Ballesteros
la source
1
Est-ce également lié à devicemapper dans les problèmes de stockage irrécupérables en boucle? github.com/docker/docker/issues/3182 "devicemapper n'est pas recommandé pour une utilisation en production". Mieux vaut s'éloigner de devicemapper pour plusieurs raisons. J'ai trouvé assez facile de passer au pilote de stockage de superposition, YMMV bien sûr, mais j'espère pas trop. 'rm -rf / var / lib / docker' est quelque peu facultatif lors du changement mais facile et je le recommande vivement. projectatomic.io/blog/2015/06/...
Gaoithe
1
FYI, vous pouvez voir l'utilisation du disque de pool léger avec " sudo lvs". Cela aide lorsque vous essayez de déterminer "combien" d'espace disque vous devez nettoyer (en utilisant les réponses données).
Aaron D. Marasco

Réponses:

28

Vous pouvez utiliser:

docker system prune -a -f --volumes

où:

  • -a == supprime toutes les images inutilisées
  • -f == force
  • --volumes == élaguer les volumes.

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

Par ailleurs, j'ai eu beaucoup de problèmes lorsque j'ai utilisé le pilote devicemapper sur mon environnement. J'avais l'habitude de nettoyer comme je l'ai mentionné, mais il y avait encore d'autres problèmes de devicemapper. Je recommande fortement de passer à overlay2, cela a résolu presque tout complètement.

Tidhar Klein Orbach
la source
1
Nous exécutons régulièrement les commandes dans la réponse de @ Cokoda-Raka, mais pour un hôte Docker particulier, cette commande était nécessaire lorsque overaly2 utilisait une quantité importante d'espace disque, plus qu'il n'aurait dû. Je pense que je vais également ajouter cette commande à nos tâches de nettoyage automatisées.
StockB
1
Cela a aidé sur RHEL 7 avec Docker 1.13.1. Après l' exécution docker container prune, docker image prune, docker volume prune, nous avons toujours le devmapper / erreur Thin Pool. La commande ci-dessus a fonctionné, libérant l'espace nécessaire et éliminant le besoin de redémarrer le démon.
Johnathan Elmore
167

Exécutez simplement ces trois. Pas besoin de retirer les conteneurs RUNNING.

  1. Nettoyage des processus sortis:

    docker rm $(docker ps -q -f status=exited)
    
  2. Nettoyer les volumes suspendus:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. Nettoyer les images pendantes:

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    
Cokorda Raka
la source
4
Je l'ai appris d'ici: stackoverflow.com/questions/32723111/…
Cokorda Raka
19
La version 1.13 permet maintenant d'appeler docker system prune docs.docker.com/engine/reference/commandline/system_prune
Vivek Kodira
1
Cela devrait probablement être la réponse acceptée. L'autre réponse peut potentiellement tuer plus de conteneurs que vous ne voulez en tuer.
DigitalFiz
2
Ces commandes sont très utiles pour nettoyer le disque de la machine, mais n'ont pas résolu le problème avec le devicemapper et l'espace.
Paulo Oliveira
4
Je ne comprends toujours pas "ce que" ce message d'erreur signifie, donc même si ces commandes fonctionnent, je ne comprendrais pas entièrement pourquoi. Qu'est-ce qu'une «piscine mince»? Et qu'est-ce que les processus sortants ont à voir avec la «libération de blocs de données»?
yiati