15 votes

Pourquoi docker signale-t-il une utilisation du disque de 100 % sur une image ubuntu fraîche ?

Je ne suis plus en mesure d'utiliser Docker ou d'exécuter efficacement de nouvelles images - il signale que l'utilisation du disque est de 100 %. Ici, vous pouvez voir que je lance une copie immaculée d'ubuntu, et pourtant il me dit que je n'ai plus d'espace disque :

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Séparément, j'essaie de démarrer une instance mysql et elle me donne des messages d'erreur qui, je pense, sont liés au fait que je n'ai pas de disque disponible. Lorsque j'essaie d'exécuter orchardup/mysql, j'obtiens :

ERROR: 1030  Got error 28 from storage engine

Ce qui signifie qu'il n'a plus d'espace de stockage.

Dans ces conditions, comment dois-je interpréter le rapport df -h ci-dessus, et comment puis-je déterminer ce qui consomme 100% de mon disque ? J'exécute docker 1.3, sous OSX 10.9.4, en utilisant boot2docker.

Merci.


Edit : Comme solution de contournement, j'ai exécuté boot2docker delete et ensuite boot2docker init et il semble que toutes mes images aient été détruites (heureusement, je peux les reconstruire avec ma carte de crédit). dockerfiles ). Maintenant, quand je démarre une nouvelle image ubuntu :

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

C'est tellement mieux. Mais, je suis toujours confus, il doit y avoir une sorte de disque global partagé entre toutes les images hébergées par boot2docker qui était auparavant rempli ?


Edit 2 : Je viens de télécharger un tas d'images, et maintenant voici ce que je vois quand je lance l'image ubuntu et vérifie l'espace disque libre :

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

De 3 % à 16 % de consommation ! Il y a manifestement une sorte de disque partagé entre toutes mes images que je ne comprends pas...

1voto

nagu Points 146

Sur les hôtes Windows, boot2docker fonctionne en créant une machine virtuelle à l'aide de virtual box. lorsque vous exécutez boot2docker init, il crée une machine virtuelle et, par défaut, attribue 20G au disque racine. cette machine virtuelle exécute un système d'exploitation Linux minimal qui, à son tour, exécute le démon docker (le démon docker ne fonctionne pas nativement sur Windows - encore).

le disque attaché à la machine virtuelle fournit le stockage pour les images docker. Vous pouvez donc envisager d'ajouter des options supplémentaires à la commande boot2docker init pour augmenter la taille initiale du disque. Cela augmentera la taille du disque disponible pour la machine virtuelle, mais comme Queasy l'a souligné, vous devez ajouter les options supplémentaires au démon docker pour augmenter le stockage disponible pour les images.

lorsque vous exécutez "df -h" dans le conteneur, la taille totale du disque indiquée est celle de l'espace disque alloué au démon docker à l'aide de l'option "dm.basesize".

note : boot2docker est maintenant déprécié en faveur de Docker Toolbox. vous pourriez vouloir passer à cette version, auquel cas vous utiliseriez "docker-machine create" au lieu de "boot2docker init". je suis passé à docker-toolbox et ne peux donc pas tester les options de commande nécessaires pour boot2docker init

0voto

Dirk Calloway Points 252

Modifiez la configuration de docker dans /etc/sysconfig/docker-storage et ajoutez la ligne :

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

N'oubliez pas de sauvegarder votre docker avant de procéder à cette tâche car elle supprimera vos données une fois initialisée.

0voto

Tim G Points 411

Considérez que le lecteur peut être défectueux. Hitachi (Drive Fitness Test), Seagate (Seatools) et Western Digital (Western Digital Data Lifeguard) proposent tous des logiciels de diagnostic gratuits pour vous aider à le déterminer.

Pour illustrer la façon dont un mauvais disque peut nuire à l'espace disque, j'ai sauvegardé des disques de 1 To qui signalent à Windows qu'ils ont encore de l'espace disque. PETABYTES de données à transférer.

Si votre disque est en bon état, utilisez du (Disk Usage) pour voir quel est le dossier le plus volumineux. du -h /usr/bin , du -h /var o du -h /home/[username]/Downloads pour aider à le localiser.

Edit : J'ai vu que vous utilisez OS X : Vous devrez utiliser les outils pour disques durs mentionnés ci-dessus comme options de démarrage ou dans quelque chose comme le Windows PE gratuit, sur lequel vous pourrez ensuite démarrer et exécuter ces outils.

0voto

bbaassssiiee Points 1345

Le devicemapper est le moteur de stockage par défaut de docker. Il essaie de pré-allouer 100 Go par défaut dans /var/lib/docker. Cependant, tout cet espace n'est pas vraiment utilisé, et vous pouvez le configurer dans les options. Documents sur Docker

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X