web-dev-qa-db-ger.com

Docker Machine: Kein Platz mehr auf dem Gerät

Ich versuche, Docker Machine mit Docker Compose einzurichten.

Szenario 1 (ohne Docker-Maschine)
Wenn ich docker-compose up -d ohne Docker Machine ausführte, werden meine drei verknüpften Container wie beabsichtigt erstellt (nginx + mongodb + nodejs).

Szenario 2 (mit Docker-Maschine)
Dann erstelle ich mit Docker Machine eine VM und weise Docker an, mit eval $(docker-machine env streambacker-dev) mit diesem Computer zu sprechen.

An diesem Punkt, wenn ich ssh zu meinem Docker-Rechner singe und df -h starte, erhalte ich: 

docker machine df -h

Wenn ich dann docker-compose up -d starte, erhalte ich die Fehlermeldung "Kein Speicherplatz mehr auf Gerät" , während der letzte Container heruntergeladen wird.

"tmpfs" scheint danach tatsächlich etwas voll zu sein:

docker machine df -h

Wenn Sie die Option --virtualbox-disk-size aktivieren, wird standardmäßig ein Wert von 20000 MB angezeigt. Dies ist meiner Meinung nach auf beiden Bildern "/ dev/sda1". Warum füllen die Container also "tmpfs" und was genau ist "tmpfs"? Ist ein temporäres Download-Verzeichnis? Wie kann ich mehr Platz für meine Container schaffen?

Vielen Dank!

Zur Information verwende ich Docker Machine 0.4.0-rc2 und Docker Compose 1.3.2.

107
Marc Pe-Pe

Wie oben gesagt, hat die tmpfs nichts mit --virtualbox-disk-size zu tun. Es scheint, als würde boot2docker tmpfs in den Arbeitsspeicher einbinden, daher müssen Sie Ihrer virtualbox vm mehr Speicherplatz zuweisen. Sie können dies tun, indem Sie den Parameter --virtualbox-memory angeben.

   --virtualbox-memory "1024"
Size of memory for Host in MB [$VIRTUALBOX_MEMORY_SIZE]

Voreinstellungen:

$ 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
[email protected]:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    112.7M    783.9M  13% /

Wenn --virtualbox-memory auf 8096 eingestellt ist

$ 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
[email protected]:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     6.9G    112.4M      6.8G   2% /
79
wtekiela

Ich hatte den gleichen Fehler ([ERROR] InnoDB: Error number 28 means 'No space left on device') und löse ihn folgendermaßen:

1 Löschen Sie die verwaisten Volumes in Docker. Sie können den integrierten Docker-Volume-Befehl verwenden. Der integrierte Befehl löscht auch alle Verzeichnisse in/var/lib/docker/Volumes, die kein Volume sind. Stellen Sie also sicher, dass Sie nichts dort eingefügt haben, das Sie speichern möchten.

Seien Sie vorsichtig, wenn Sie Daten haben, die Sie behalten möchten

Aufräumen:

$ docker volume rm $(docker volume ls -qf dangling=true)

Zusätzliche Befehle:

Liste baumelnder Volumina:

$ docker volume ls -qf dangling=true

Alle Volumes auflisten:

$ docker volume ls

2 Entfernen Sie auch alle nicht verwendeten Bilder.

Beseitigen Sie zuerst die <none>-Bilder (diese werden manchmal beim Erstellen eines Images generiert und wenn das Image-Gebäude aus irgendeinem Grund unterbrochen wurde, bleiben sie dort).

hier ist ein schönes Skript, mit dem ich sie entferne 

docker rmi $(docker images | grep "^<none>" | awk '{print $3}')

Wenn Sie dann Docker Compose verwenden, um Images lokal für jedes Projekt zu erstellen. Sie erhalten am Ende eine Menge Bilder, die normalerweise wie Ihr Ordner bezeichnet werden (Beispiel: Wenn Ihr Projektordner Hallo lautet, finden Sie den Namen Hello_blablabla der Bilder). Entfernen Sie also alle diese Bilder

sie können das obige Skript bearbeiten, um sie zu entfernen oder manuell mit 

docker rmi {image-name}

100
Mahmoud Zalt

Wenn Sie die Docker Community Edition verwenden: 

andocksystem Prune

Wenn Sie boot2docker (docker-machine) verwenden, löschen Sie die verwaisten Volumes: 

docker-Volume rm $ (Docker-Volume ls -qf dangling = true)

Nicht verwendete Bilder löschen: 

docker rmi $ (docker images -q -f "dangling = true")

44
Alex Efimov

A. NICHT VERWENDETE BILDER ENTFERNEN 

mit den Befehlen rm oder docker rmi können Sie die nicht benötigten Bilder entfernen. Tatsächlich gibt es ein Image, das bei dieser Aufgabe hilft (martin/docker-cleanup-volume). Die Basis ist, um aus Ihrer Bilder- und Containerliste auszuwählen: 

docker ps -a -s

B. ÄNDERN DES DOCKER-JSON-BESCHREIBERS

es wird in einigen Foren erwähnt. Die Idee ist, den Deskriptor in ~/.docker/machine/machines/default/config.json zu erhöhen. Der Parameter scheint DiskSize zu sein, aber ich weiß nicht, ob er in anderen Betriebssystemen (nicht in Windows) funktioniert.

C. LINUX RESIZE:

unter Windows ist die Docker-Maschine oder boot2docker tatsächlich eine Virtualbox-VM, dann können Sie die Größe des Laufwerks wie folgt ändern. Achten Sie darauf, die Dateien zu sichern. Das allgemeine Verfahren besteht darin, eine Größenänderung in virtualbox vorzunehmen und dann mit einem Dienstprogramm namens gpartd den von Linux in seinen Partitionen wahrgenommenen Speicherplatz zu ändern. Es gibt einige Links, um dieses Verfahren auszuführen, auf das unten verwiesen wird:

D. DIE DOCKER-MACHINE/BOOT2DOCKER AUFNEHMEN

Die Idee ist, die Standard-Docker-Maschine neu zu erstellen. Die folgenden Befehle können Sie veranschaulichen. Wenn Sie den boot2docker neu erstellen, gehen die zuvor heruntergeladenen Docker-Images verloren.

docker-Maschine-RM-Standardeinstellung

docker-machine --driver virtualbox erstellen --virtualbox-disk-size "100100" Standard

standardeinstellung für Docker-Maschine 

dann können Sie zur virtuellen Box gehen und den boot2docker-Space mit dem Befehl "df -h" sehen

12
andhdo

Am Docker osx/konnte ich eine Taste drücken [Move Disk Image] Und es wurde erfolgreich der Docker.qcow2 (vermutlich Container/Images enthaltend) verschoben. 

 enter image description here Anfangs bekam ich - als die Maschinen starteten - immer noch einen Bei Gerätefehler war kein Platz mehr vorhanden, der jedoch kurz danach behoben wurde.

2
johndpope

Ich bin auf dieses Problem gestoßen und konnte keinen zusätzlichen Speicherplatz mit der Docker-Benutzeroberfläche für Mac hinzufügen. Ich habe das Docker mit Homebrew installiert und den folgenden Befehl ausgeführt, als ich meinen Computer erstellt hatte:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

dadurch wird der Speicherplatz und der Festplattengröße, die ich zuvor hatte, doppelt so viel Speicherplatz hinzugefügt, und Sie können hier die gewünschte Einstellungsgröße hinzufügen 

0
aabiro