Ich versuche, Docker Machine mit Docker Compose einzurichten.
Szenario 1 (ohne Docker-Maschine)
Wenn ich docker-compose up -d
ohne Docker-Maschine ausgeführt werde, werden meine 3 verknüpften Container wie beabsichtigt erstellt (nginx + mongodb + nodejs).
Szenario 2 (mit Docker Machine)
Dann erstelle ich mit Docker Machine eine VM und fordere Docker auf, mit dieser Maschine zu sprechen eval $(docker-machine env streambacker-dev)
.
Wenn ich zu diesem Zeitpunkt zu meinem Docker-Computer ssh und laufe df -h
, erhalte ich:
Wenn ich dann starte docker-compose up -d
, wird beim Herunterladen des letzten Containers die Fehlermeldung "Kein Speicherplatz mehr auf dem Gerät" angezeigt .
"tmpfs" scheint danach tatsächlich etwas voll zu sein:
Überprüfen der --virtualbox-Disk-Größe Option zeigt , dass es standardmäßig auf 20000 MB, was meiner Meinung nach ist das, was wir als „/ dev / sda1“ auf beiden Bildern sehen. Warum füllen Container also "tmpfs" n 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 .
quelle
tmpfs
hat nichts damit zu tun--virtualbox-disk-size
. Es ist ein Dateisystem (wie eine RAM-Disk), das im Speicher installiert ist, und es gibt dort keinen Zugriff auf Ihre Disk.docker rmi $(docker images -f dangling=true -q)
unddocker volume rm $(docker volume ls -f dangling=true -q)
Antworten:
Wie oben gesagt,
tmpfs
hat das nichts damit zu tun--virtualbox-disk-size
. Es scheint, als würde boot2dockertmpfs
in den Speicher eingebunden , sodass Sie Ihrer virtualbox vm mehr Speicher zuweisen müssen. Sie können dies tun, indem Sie den--virtualbox-memory
Parameter angeben.Standardeinstellungen:
Mit
--virtualbox-memory
eingestellt auf8096
quelle
Ich hatte den gleichen Fehler (
[ERROR] InnoDB: Error number 28 means 'No space left on device'
) und löste 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 / volume, die kein Volume sind. Stellen Sie daher sicher, dass Sie dort nichts gespeichert haben, was Sie speichern möchten.
Warnung Seien Sie dabei sehr vorsichtig, wenn Sie Daten haben, die Sie behalten möchten
Aufräumen:
Zusätzliche Befehle:
Liste baumelnder Bände:
Alle Bände auflisten:
2. Entfernen Sie auch alle nicht verwendeten Bilder.
Entfernen Sie zuerst die
<none>
Bilder (diese werden manchmal beim Erstellen eines Bildes generiert, und wenn das Erstellen des Bildes aus irgendeinem Grund unterbrochen wurde, bleiben sie dort).Hier ist ein schönes Skript, mit dem ich sie entferne
Wenn Sie dann Docker Compose verwenden, um Bilder für jedes Projekt lokal zu erstellen. Sie werden am Ende viele Bilder haben, die normalerweise wie Ihr Ordner benannt sind (wenn Ihr Projektordner beispielsweise Hallo heißt, finden Sie den Namen der Bilder
Hello_blablabla
). Ziehen Sie daher auch in Betracht, alle diese Bilder zu entfernenSie können das obige Skript bearbeiten, um sie zu entfernen, oder sie manuell mit entfernen
docker rmi {image-name}
quelle
docker rmi $(docker images | grep '^<none>' | awk '{print $3}')
. Das Entfernen angehaltener Container kanndocker rm $(docker ps -qa --no-trunc --filter "status=exited")
wie hier beschrieben erfolgen: stackoverflow.com/a/32723127/619659 .docker images | grep "^<none>" | xargs docker rmi
.docker volume prune
Wenn Sie Docker Community Edition verwenden:
Wenn Sie boot2docker (Docker-Maschine) verwenden, löschen Sie die verwaisten Volumes:
Nicht verwendete Bilder löschen:
quelle
docker system prune
hat mir geholfendocker system prune
ftwdocker volume prune
Nur für Volumes löscht die Systembereinigung die baumelnden Volumes nicht.docker rmi $(docker images -q)
. Fügen--force
Sie hinzu, wenn Sie müssen, wenn mehrere Ebenen übersprungen werden, die in mehreren Containern enthalten sind.A. ENTFERNEN SIE NICHT VERWENDETE BILDER
Mit den Befehlen docker 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-Volumes). Die Basis besteht darin, die Auswahl aus Ihrer Bilder- und Containerliste zu starten:
B. ÄNDERN SIE DEN DOCKER JSON DESCRIPTOR
es wird in einigen Foren erwähnt. Die Idee ist, den Deskriptor in ~ / .docker / machine / machine / default / config.json zu erhöhen. Der Parameter scheint DiskSize zu sein, aber ich weiß nicht, ob es in anderen Betriebssystemen funktioniert (nicht in Windows).
C. LINUX RESIZE:
Unter Windows ist Docker oder boot2docker tatsächlich eine Virtualbox-VM. Anschließend können Sie die Schritte zum Ändern der Größe der Festplatte ausführen. Achten Sie darauf, die Dateien zu sichern. Das allgemeine Verfahren besteht darin, eine Größenänderung in der Virtualbox vorzunehmen und dann ein Hilfsprogramm namens gpartd zu verwenden, um den von Linux in seinen Partitionen wahrgenommenen Speicherplatz zu ändern. Es gibt einige Links zu diesem Verfahren, auf die unten verwiesen wird:
D. ERHOLEN SIE DIE DOCKER-MASCHINE / BOOT2DOCKER
Die Idee ist, die Standard-Docker-Maschine neu zu erstellen. Die folgenden Befehle können Sie veranschaulichen. Beachten Sie, dass Sie beim Neuerstellen des boot2docker die zuvor heruntergeladenen Docker-Images verlieren.
Dann können Sie zur virtuellen Box gehen und den boot2docker-Bereich mit dem Befehl "df -h" anzeigen.
quelle
Auf Docker konnte osx / I eine Taste [ Move Disk Image ] drücken und Docker.qcow2 (vermutlich mit Containern / Images) erfolgreich verschoben.
Anfangs - als die Maschinen gestartet wurden - wurde immer noch ein Fehler "Kein Speicherplatz mehr auf dem Gerät" angezeigt, der jedoch kurz darauf behoben wurde.
quelle
Ich bin auf dieses Problem gestoßen und konnte mit der Docker-Benutzeroberfläche für Mac keinen zusätzlichen Speicherplatz hinzufügen. Ich habe Docker mit Homebrew installiert und beim Erstellen meines Computers den folgenden Befehl ausgeführt:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
Dadurch wird der virtuellen Box, die ich zuvor hatte, doppelt so viel Speicherplatz und Festplattengröße hinzugefügt, und Sie können hier die gewünschte Einstellungsgröße hinzufügen, wie Sie es für richtig halten
quelle