Pourquoi Docker signale-t-il une utilisation du disque à 100% sur une nouvelle image Ubuntu?


15

Je ne suis plus en mesure d'utiliser Docker ou d'exécuter efficacement de nouvelles images - il est signalé que j'ai 100% d'utilisation du disque. Ici, vous pouvez voir que je lance une copie vierge 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 cela 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.

Compte tenu de cela, 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'utilise docker 1.3, fonctionnant sous OSX 10.9.4, en utilisant boot2docker.

Merci.


Edit: Comme solution de contournement, j'ai exécuté boot2docker delete, puis boot2docker init, et il semble avoir supprimé toutes mes images (heureusement, je peux les reconstruire avec mes fichiers 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

Tellement mieux. Mais, je suis toujours confus, il doit y avoir une sorte de disque global partagé sur toutes les images hébergées par boot2docker qui ont été précédemment remplies?


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% consommés! Il y a clairement une sorte de disque partagé entre toutes mes images que je ne comprends pas ...


Comment utilisez-vous les conteneurs Docker et comment les utilisateurs / groupes sont-ils dispersés (plus pour les erreurs mysql)? En outre, pour docker partagent-ils quelque chose sur l'hôte ou sont-ils purement autonomes?
linuxdev2013

Réponses:


1

Sur les hôtes Windows, boot2docker fonctionne en créant une machine virtuelle à l'aide d'une boîte virtuelle. 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 réel (le démon docker ne fonctionne pas nativement sur Windows - pour le moment).

le disque attaché à la machine virtuelle fournit un stockage pour les images du docker. vous pouvez donc regarder des options supplémentaires pour la commande boot2docker init pour augmenter la taille initiale du disque. cela augmentera la taille du disque disponible pour une utilisation dans la machine virtuelle, mais comme l'a souligné Queasy, vous devez ajouter des 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 signalée est celle de l'espace disque alloué au démon docker à l'aide de l'option "dm.basesize".

note: boot2docker est désormais déconseillé au profit de Docker Toolbox. vous voudrez peut-être mettre à niveau vers cette version, auquel cas vous utiliserez "docker-machine create" au lieu de "boot2docker init". j'ai basculé vers docker-toolbox, je ne peux donc pas tester les options de commande nécessaires pour l'initialisation de boot2docker


0

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 poursuivre cette tâche car il supprimera vos données une fois initialisées.


--storage-optn'est pas pris en charge sur OSX
Quanlong

0

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

Pour illustrer comment un mauvais disque peut visser avec de l'espace disque, j'ai sauvegardé des disques de 1 To qui signalent à Windows qu'ils ont encore des PETABYTES de données à transférer.

Dans le cas où votre lecteur fonctionne correctement, utilisez du (Utilisation du disque) pour voir quel dossier est le plus grand. du -h /usr/bin, du -h /varOu du -h /home/[username]/Downloadsà l' aide indiquer exactement.

Edit: j'ai vu que vous utilisez OS X: vous devrez utiliser les outils de disque dur mentionnés ci-dessus comme options de démarrage ou dans quelque chose comme Windows PE gratuit, que vous pouvez ensuite démarrer et exécuter ces outils.


0

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 Docker

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.