J'essaye de configurer Docker Machine avec Docker Compose.
Scénario 1 (sans Docker Machine)
Si je cours docker-compose up -d
sans Docker Machine, il crée mes 3 conteneurs liés comme prévu (nginx + mongodb + nodejs).
Scénario 2 (avec Docker Machine)
Ensuite, je crée une VM à l'aide de Docker Machine et je dis à Docker de parler à cette machine avec eval $(docker-machine env streambacker-dev)
.
À ce stade, si je ssh sur ma machine docker et que df -h
je l' exécute , j'obtiens:
Si je cours ensuite docker-compose up -d
, j'obtiens une erreur «aucun espace laissé sur l'appareil» lors du téléchargement du dernier conteneur.
"tmpfs" semble en effet être un peu plein après cela:
La vérification de l' option --virtualbox-disk-size montre qu'elle est par défaut de 20000 Mo, ce que je pense que c'est ce que nous pouvons voir comme "/ dev / sda1" sur les deux images. Alors pourquoi les conteneurs remplissent "tmpfs" n et qu'est-ce que "tmpfs" exactement? Est-ce qu'un répertoire de téléchargement temporaire? Comment puis-je créer plus d'espace pour mes conteneurs?
Merci!
Pour plus d'informations, j'utilise Docker Machine 0.4.0-rc2 et Docker Compose 1.3.2 .
la source
tmpfs
n'a rien à voir avec--virtualbox-disk-size
. C'est un système de fichiers (comme un disque RAM) monté en mémoire et rien n'y accède à votre disque.docker rmi $(docker images -f dangling=true -q)
etdocker volume rm $(docker volume ls -f dangling=true -q)
Réponses:
Comme dit ci-dessus, le
tmpfs
n'a rien à voir avec--virtualbox-disk-size
. Il semble que boot2docker se montetmpfs
en mémoire, vous devez donc consacrer plus de mémoire à votre virtualbox vm. Vous pouvez le faire en spécifiant le--virtualbox-memory
paramètre.Valeurs par défaut:
Avec
--virtualbox-memory
réglé sur8096
la source
J'ai eu la même erreur (
[ERROR] InnoDB: Error number 28 means 'No space left on device'
) et résolvez-le de cette façon:1 . Supprimez les volumes orphelins dans Docker, vous pouvez utiliser la commande de volume docker intégrée. La commande intégrée supprime également tout répertoire dans / var / lib / docker / volumes qui n'est pas un volume, alors assurez-vous de ne rien y mettre que vous souhaitez enregistrer.
Attention soyez très prudent avec cela si vous avez des données que vous souhaitez conserver
Nettoyer:
Commandes supplémentaires:
Liste des volumes pendantes:
Lister tous les volumes:
2. Pensez également à supprimer toutes les images inutilisées.
Débarrassez-vous d'abord du
<none>
images (celles-ci sont parfois générées lors de la construction d'une image et si pour une raison quelconque la construction de l'image a été interrompue, elles y restent).voici un joli script que j'utilise pour les supprimer
Ensuite, si vous utilisez Docker Compose pour créer des images localement pour chaque projet. Vous vous retrouverez avec beaucoup d'images généralement nommées comme votre dossier (par exemple, si votre dossier de projet s'appelle Hello, vous trouverez le nom des images
Hello_blablabla
). alors pensez également à supprimer toutes ces imagesvous pouvez modifier le script ci-dessus pour les supprimer ou les supprimer manuellement avec
docker rmi {image-name}
la source
docker rmi $(docker images | grep '^<none>' | awk '{print $3}')
. La suppression des conteneurs arrêtés peut être effectuéedocker rm $(docker ps -qa --no-trunc --filter "status=exited")
comme décrit ici: stackoverflow.com/a/32723127/619659 .docker images | grep "^<none>" | xargs docker rmi
.docker volume prune
Si vous utilisez Docker Community Edition:
Si vous utilisez boot2docker (docker-machine), effacez les volumes qui sont orphelins:
Effacer les images inutilisées:
la source
docker system prune
m'a aidédocker system prune
ftwdocker volume prune
pour les volumes seulement, l'élagage du système n'effacera pas les volumes suspendus.docker rmi $(docker images -q)
. Ajoutez--force
si vous devez quand il ignore un groupe de calques inclus dans plusieurs conteneurs.A. SUPPRIMER LES IMAGES INUTILISÉES
à l'aide des commandes docker rm ou docker rmi, vous pouvez supprimer les images dont vous n'avez pas besoin. Existe en fait une image qui aide dans cette tâche (martin / docker-cleanup-volumes). La base est de commencer la sélection à partir de votre liste d'images et de conteneurs:
MODIFIER LE DESCRIPTEUR DOCKER JSON
il est mentionné dans certains forums. L'idée est d'incrémenter le descripteur situé dans ~ / .docker / machine / machines / default / config.json. Le paramètre semble être DiskSize mais je ne sais pas s'il fonctionne dans d'autres systèmes d'exploitation (pas dans Windows).
C. REDIMENSIONNEMENT LINUX:
dans le système d'exploitation Windows, la machine docker ou boot2docker est en fait une virtualbox vm, vous pouvez alors suivre la procédure pour redimensionner le disque. Prenez soin de sauvegarder les fichiers. La procédure générale est de faire un redimensionnement dans virtualbox puis d'utiliser un utilitaire appelé gpartd pour modifier l'espace perçu par linux dans ses partitions. Il existe quelques liens pour effectuer cette procédure référencés ci-dessous:
D.RÉCRÉER LE DOCKER-MACHINE / BOOT2DOCKER
L'idée est de recréer le docker-machine par défaut. Les commandes suivantes peuvent vous illustrer. Notez que lorsque vous recréez le boot2docker, vous perdrez les images de docker téléchargées précédemment.
alors vous pouvez aller à la boîte virtuelle et voir l'espace boot2docker avec la commande "df -h"
la source
Sur docker osx / j'ai pu appuyer sur un bouton [ Déplacer l'image du disque ] et il a déplacé avec succès le Docker.qcow2 (contenant probablement des conteneurs / images)
initialement - lorsque les machines ont démarré - j'obtenais toujours une erreur Aucun espace laissé sur le périphérique, mais cela a été résolu peu de temps après.
la source
J'ai rencontré ce problème et je n'ai pas pu ajouter d'espace supplémentaire avec l'interface utilisateur de docker pour mac, j'ai installé docker avec homebrew et j'ai exécuté la commande suivante lors de la création de ma machine:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
cela ajoute le double de l'espace mémoire et de la taille du disque à la virtualbox que j'avais auparavant et vous pouvez ajouter ici la taille des paramètres dont vous avez besoin comme bon vous semble
la source