Come aumentare la memoria docker-machine Mac


108

Sono nuovo su Docker e sto provando a seguire questo tutorial per configurare MemSQL da un'immagine Docker: http://docs.memsql.com/4.0/setup/docker/ . Sono su un Mac e il tutorial utilizza boot2dockerche sembra essere stato deprecato.

La VM necessita di 4 GB di memoria per funzionare. Il tutorial specifica come farlo conboot2docker ma non riesco a trovare un modo per farlo con la casella degli strumenti docker-machine / docker.

Ecco il comando che sto usando e l'errore che ricevo solo provando a seguire il tutorial senza alterare la configurazione di boot2docker.

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

Risposte:


111

quando crei una macchina docker, puoi nominare la dimensione della memoria:

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

Fammi sapere se questo aiuta.


Questo sembra decisamente il posto giusto per regolare l'allocazione della memoria. Tuttavia, viene ancora visualizzato lo stesso errore dopo il riavvio di questa VM. Nel check-systemprogramma ( github.com/memsql/memsql-docker-quickstart/blob/master/… ), vedo queste righe che determinano questo errore. 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 il

2
Non è stato possibile farlo funzionare alterando la configurazione, ma l'eliminazione e la ricreazione della macchina docker vm come mostrato sopra ha risolto il problema!
DJElbow il

Certo, pulisco il secondo modo, sembra che non funzioni più.
BMW

178

Puoi farlo tramite la riga di comando. Ad esempio, per modificare la macchina dall'esecuzione predefinita di 1cpu / 2048 MB di RAM:

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

Puoi quindi controllare le tue impostazioni:

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

E per docker-machine inspectsegnalare lo stato corretto delle cose, modifica ~/.docker/machine/machines/default/config.jsonper riflettere le tue modifiche.


1
Funzionava anche quando la GUI (versione 5.0.16) non funzionava.
MikeF

6
Questa risposta dovrebbe essere in cima
nakajuice

5
Nota che dopo che il comando è stato eseguito docker-machine inspectnon mostrerà alcuna modifica. Tuttavia, se corri docker statsvedrai che le modifiche sono state applicate.
slovit

@slovit e altri: puoi quindi modificare il config.jsonfile docker-machine per riflettere la dimensione effettiva. Esempio: per default, come utilizzato nella soluzione di esempio, modificare il ~/.docker/machine/machines/default/config.jsonfile in modo che la sottoproprietà Memory(e CPUse anche modificata) sotto Drivervenga modificata in 4096. Quindi, docker-machine inspectmostrerà il valore corretto.
ScriptAutomate

80

Per Docker versione 1.12.1 (build: 12133) e versioni successive su macOS, è disponibile un'opzione per modificare CPU e RAM dall'interfaccia utente e riavviare Docker. Puoi trovare le preferenze dalla barra degli strumenti. Allegare immagini per chiarezza.

Aggiornamento: agosto 2020: Preferenze -> Risorse (grazie a @ swedge218)

Vecchio passaggio (probabilmente non funzionante ora): Preferenze -> Avanzate -> regola risorse -> Applica e riavvia

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

scheda avanzata docker (memoria)


3
Questo è stato spostato nella scheda Avanzate. Grazie per aver condiviso questo.
GabLeRoux

Uomo che era sia ovvio che del tutto non intuitivo - grazie!
AlienWebguy

Queste modifiche si applicano anche se utilizzo il gommone con virtualbox? O dovrei usare solo VBoxManage per regolare la dimensione del mem?
Artur79

2
Esiste una riga di comando equivalente a questo? Ho Docker per mac ma apparentemente docker-machine ls non mi dà nulla, quindi non posso modificare la macchina predefinita.
Andrea Bergonzo

Sono Preferenze -> Risorse a partire da oggi.
swedge218

42

Manutentore di Docker Machine qui. Non credo che la regolazione config.jsonmanuale funzionerà.

Le tue due opzioni sono creare la macchina con il --virtualbox-memoryset o regolare la memoria della VM nella GUI di VirtualBox ("Impostazioni> Sistema" per quella VM, credo). Assicurati che la macchina sia spenta e che dovrebbe esserci un piccolo cursore che funzioni.

EDIT: Un'altra risposta mostra che puoi eseguire l'operazione sul posto dalla riga di comando anche usando VBoxManage.


3
Funziona, ma nota che docker-machine inspectcontinuerà a riportare la quantità di memoria originale anche dopo averla modificata nella GUI di VirtualBox.
Tamlyn

2
Questo è vero, in modo da avere docker-machine inspectcomunicare l'importo esatto, è fare deve modificare config.json(che è dove inspectottiene le informazioni).
nathanleclaire

1
Farlo in Virtualbox è il più semplice
Niranjan Sonachalam


14

Altre risposte hanno mostrato come modificare la memoria utilizzando VBoxManage:

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

Per confermare la modifica dalla riga di comando:

VBoxManage showvminfo default | grep Memory

O

docker-machine ssh default free

Ciao cpep, puoi modificare la tua risposta e formattare correttamente i blocchi di codice ?
TT.

4

fox xhyve (un'altra virtualizzazione in macos) puoi modificare la proprietà ~ / .docker / machine / default / config.json Driver / Memory (predefinito su 1024) quindi riavviare la macchina docker per applicare le modifiche


L'ho trovato sotto ~/.docker/machine/machines/default/config.json. Grazie 👍
Tarek N. Elsamni
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.