So erhöhen Sie den Docker-Machine-Speicher Mac

108

Ich bin neu in Docker und versuche, dieses Tutorial zum Einrichten von MemSQL über ein Docker-Image durchzugehen - http://docs.memsql.com/4.0/setup/docker/ . Ich bin auf einem Mac und das Tutorial verwendet, boot2dockerwas veraltet zu sein scheint.

Die VM benötigt 4 GB Speicher, um ausgeführt zu werden. Das Tutorial gibt an, wie das geht, boot2dockeraber ich kann mit der Docker-Maschine / Docker-Toolbox keinen Weg finden, dies zu tun.

Hier ist der Befehl, den ich verwende, und der Fehler, den ich erhalte, wenn ich nur versuche, das Tutorial durchzugehen, ohne die boot2docker-Konfiguration zu ändern.

docker run --rm --net=host memsql/quickstart check-system
Error: MemSQL requires at least 4 GB of memory to run.
DJElbow
quelle

Antworten:

111

Wenn Sie eine Docker-Maschine erstellen, können Sie die Speichergröße angeben:

docker-machine create -d virtualbox --virtualbox-memory 4096 default

Lassen Sie mich wissen, ob das hilft.

BMW
quelle
Dies scheint definitiv der richtige Ort zu sein, um die Speicherzuordnung anzupassen. Nach dem Neustart dieser VM wird jedoch immer noch der gleiche Fehler angezeigt. Im check-systemProgramm ( github.com/memsql/memsql-docker-quickstart/blob/master/… ) sehe ich diese Zeilen, die diesen Fehler bestimmen würden. ONE_MB = 1024 ** 2, virtual_memory = psutil.virtual_memory(), if virtual_memory.total < ONE_MB * 3700: sys.stderr.write("Error: MemSQL requires at least 4 GB of memory to run.\n").
DJElbow
2
Konnte dies nicht durch Ändern der Konfiguration zum Laufen bringen, aber das Löschen und Neuerstellen der Docker-Maschine vm wie oben gezeigt löste das Problem!
DJElbow
Klar, ich putze den zweiten Weg, anscheinend funktioniert es nicht mehr.
BMW
178

Sie können dies über die Befehlszeile tun. So ändern Sie beispielsweise den Computer vom Standardlauf mit 1 CPU / 2048 MB RAM:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start

Sie können dann Ihre Einstellungen überprüfen:

VBoxManage showvminfo default | grep Memory
VBoxManage showvminfo default | grep CPU

Und für docker-machine inspectden richtigen Stand der Dinge zu berichten, zu bearbeiten , ~/.docker/machine/machines/default/config.jsonum die Änderungen zu reflektieren.

Ran Rubinstein
quelle
1
Dies funktionierte auch dann, wenn die GUI (Version 5.0.16) dies nicht tun würde.
MikeF
6
Diese Antwort sollte oben sein
Nakajuice
5
Beachten Sie, dass nach Ausführung des Befehls docker-machine inspectkeine Änderungen angezeigt werden. Wenn Sie jedoch ausführen, werden docker statsSie feststellen, dass die Änderungen übernommen wurden.
Slovit
@slovit und andere: Sie können dann die Docker-Maschinendatei so ändern config.json, dass sie der tatsächlichen Größe entspricht. Beispiel: defaultÄndern Sie für , wie in der Beispiellösung verwendet, die ~/.docker/machine/machines/default/config.jsonDatei so, dass die Memory(und CPUfalls auch geänderte) Untereigenschaft unter Driverin geändert wird 4096. Dann docker-machine inspectwird der richtige Wert angezeigt.
ScriptAutomate
79

Für Docker Version 1.12.1 (Build: 12133) und höher unter MacOS besteht die Möglichkeit, CPUs und RAM über die Benutzeroberfläche zu ändern und Docker neu zu starten. Sie finden die Einstellungen in der Symbolleiste. Anhängen von Bildern zur besseren Übersicht.

Schritte: Einstellungen -> Erweitert -> Ressourcen anpassen -> Übernehmen und neu starten

https://www.dropbox.com/s/znltd1v4r00nfpu/Screenshot%202017-03-24%2012.12.58.png?dl=0

Docker erweiterte Registerkarte (Speicher)

Srikar Appalaraju
quelle
3
Dies wurde auf die Registerkarte Erweitert verschoben. Vielen Dank für das Teilen.
GabLeRoux
Mann, das war sowohl offensichtlich als auch völlig unintuitiv - danke!
AlienWebguy
Gilt diese Änderung auch, wenn ich ein Beiboot mit virtualbox verwende? Oder sollte ich nur VBoxManage verwenden, um die Memgröße anzupassen?
Artur79
2
Gibt es eine entsprechende Befehlszeile? Ich habe Docker für Mac, aber anscheinend gibt mir Docker-Maschine nichts, so dass ich die Standardmaschine nicht ändern kann.
Andrea Bergonzo
42

Docker Machine Maintainer hier. Ich denke nicht, das anzupassenconfig.json manuelle funktionieren wird.

Sie haben zwei Möglichkeiten, entweder die Maschine mit zu erstellen --virtualbox-memory Set oder den Speicher der VM in der VirtualBox-GUI anzupassen ("Einstellungen> System" für diese VM, glaube ich). Stellen Sie sicher, dass die Maschine ausgeschaltet ist und ein kleiner Schieberegler vorhanden sein sollte.

BEARBEITEN: Eine andere Antwort zeigt, dass Sie die In-Place-Operation auch über die Befehlszeile ausführen können VBoxManage.

Nathanleclaire
quelle
3
Dies funktioniert, aber beachten Sie, dass docker-machine inspectdie ursprüngliche Speichermenge auch nach einer Änderung in der VirtualBox-GUI weiterhin angezeigt wird.
Tamlyn
2
Das stimmt, um docker-machine inspectden genauen Betrag melden zu können, müssen Sie ihn bearbeiten config.json(dort erhalten Sie inspectseine Informationen).
Nathanleclaire
1
Es ist am einfachsten, es in Virtualbox zu tun
Niranjan Sonachalam
14

Andere Antworten zeigten, wie der Speicher mit VBoxManage geändert werden kann:

docker-machine stop default
VBoxManage modifyvm default --memory 4096
docker-machine start default

So bestätigen Sie die Änderung über die Befehlszeile:

VBoxManage showvminfo default | grep Memory

ODER

docker-machine ssh default free
cpep
quelle
Hallo cpep, kannst du deine Antwort bearbeiten und die Codeblöcke richtig formatieren ?
TT.
4

fox xhyve (eine weitere Virtualisierung unter macos) Sie können die Eigenschaft ~ / .docker / machine / default / config.json Driver / Memory (standardmäßig 1024) ändern und dann die Docker-Maschine neu starten, um Änderungen zu übernehmen

dchekmarev
quelle
Ich habe es unter gefunden ~/.docker/machine/machines/default/config.json. Danke 👍
Tarek N. Elsamni