J'essaie de configurer Docker Machine avec Docker Compose.
Scénario 1 (sans Docker Machine)
Si je lance docker-compose up -d
sans Docker Machine, mes 3 conteneurs liés sont créés comme prévu (nginx + mongodb + nodejs).
Scénario 2 (avec Docker Machine)
Ensuite, je crée un VM à l'aide de Docker Machine et dis à Docker de lui parler avec eval $(docker-machine env streambacker-dev)
.
À ce stade, si je ssh sur mon ordinateur de docker et exécute df -h
, je reçois:
Si je lance ensuite docker-compose up -d
, j'obtiens une erreur "il ne reste plus d'espace sur le périphérique" lors du téléchargement du dernier conteneur.
"tmpfs" semble en effet un peu complet après cela:
Le fait de cocher la case --virtualbox-disk-size indique que la valeur par défaut est 20000 Mo, ce qui, à mon avis, correspond à ce que nous pouvons voir comme "/ dev/sda1" sur les deux images. Alors, pourquoi les conteneurs remplissent-ils "tmpfs" n et qu’est-ce que "tmpfs"? Est-ce un répertoire de téléchargement temporaire? Comment puis-je créer plus d'espace pour mes conteneurs?
Merci!
Pour information, j'utilise Docker Machine 0.4.0-rc2 _ et Docker Compose 1.3.2_.
Comme indiqué ci-dessus, la tmpfs
n'a rien à voir avec --virtualbox-disk-size
. Il semble que boot2docker monte tmpfs
en mémoire. Vous devez donc consacrer plus de mémoire à votre machine virtuelle virtualbox. Vous pouvez le faire en spécifiant le paramètre --virtualbox-memory
.
--virtualbox-memory "1024"
Size of memory for Host in MB [$VIRTUALBOX_MEMORY_SIZE]
Défauts:
$ docker-machine create --driver virtualbox testA
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testA
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testA:~$ df -h /
Filesystem Size Used Available Use% Mounted on
tmpfs 896.6M 112.7M 783.9M 13% /
Avec --virtualbox-memory
défini sur 8096
$ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testB
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testB:~$ df -h /
Filesystem Size Used Available Use% Mounted on
tmpfs 6.9G 112.4M 6.8G 2% /
J'ai eu la même erreur ([ERROR] InnoDB: Error number 28 means 'No space left on device'
) et le résoudre de cette façon:
1 . Supprimez les volumes orphelins dans Docker, vous pouvez utiliser la commande de volume intégrée dans le menu fixe. La commande intégrée supprime également tout répertoire de/var/lib/docker/volumes qui n'est pas un volume. Assurez-vous de ne rien mettre dedans que vous souhaitez enregistrer.
Attention, soyez très prudent si vous souhaitez conserver certaines données.
Nettoyer:
$ docker volume rm $(docker volume ls -qf dangling=true)
Commandes supplémentaires:
Liste des volumes suspendus:
$ docker volume ls -qf dangling=true
Répertoriez tous les volumes:
$ docker volume ls
2 Pensez également à supprimer toutes les images inutilisées.
Commencez par supprimer les images <none>
(celles-ci sont parfois générées lors de la création d’une image et si, pour une raison quelconque, la construction de l’image a été interrompue, elles y restent).
voici un bon script que j'utilise pour les supprimer
docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
Ensuite, si vous utilisez Docker Compose pour générer des images localement pour chaque projet. Vous allez vous retrouver avec beaucoup d'images généralement nommées comme votre dossier (par exemple, si votre dossier de projet s'appelle Bonjour, vous trouverez le nom d'image Hello_blablabla
). alors aussi envisager de supprimer toutes ces images
vous pouvez éditer le script ci-dessus pour les supprimer ou les supprimer manuellement avec
docker rmi {image-name}
Si vous utilisez Docker Community Edition:
système de docker Prune
Si vous utilisez boot2docker (docker-machine), supprimez les volumes orphelins:
volume du menu fixe rm $ (volume du menu fixe ls -qf dangling = true)
Effacer les images inutilisées:
docker rmi $ (images de docker -q -f "dangling = true")
A. SUPPRIMER LES IMAGES NON UTILISÉES
en utilisant les commandes docker rm ou docker rmi, vous pouvez supprimer les images dont vous n’avez pas besoin. Il existe en réalité une image qui aide dans cette tâche (martin/docker-cleanup-volumes). La base est de commencer à sélectionner dans votre liste d’images et de conteneurs:
docker ps -a -s
B. MODIFIER LE DESCRIPTEUR DOCKER JSON
c'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 si cela fonctionne dans d'autres systèmes d'exploitation (pas dans Windows).
C. LINUX REDIMENSIONNEMENT:
sous Windows, docker machine 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 consiste à redimensionner dans virtualbox, puis à utiliser un utilitaire appelé gpartd pour modifier l’espace perçu par Linux dans ses partitions.
D. RECREER 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 perdez les images du menu fixe téléchargées précédemment.
docker-machine rm default
docker-machine create - pilote de la boîte virtuelle --virtualbox-disk-size "100100" par défaut
env docker-machine par défaut
alors vous pouvez aller à la boîte virtuelle et voir l'espace de boot2docker avec la commande "df -h"
Sur le menu fixe, osx/I a pu appuyer sur un bouton [Déplacer une image disque] Et a réussi à déplacer le Docker.qcow2 (contenant probablement des conteneurs/images)
initialement - lorsque les machines ont démarré - il me restait encore un Il ne restait plus d’espace sur l’erreur de périphérique mais elle a été résolue peu de temps après.
J'ai rencontré ce problème et je ne pouvais pas 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 à votre guise