Comment augmenter la mémoire de la machine docker Mac


108

Je suis nouveau sur Docker et j'essaie de suivre ce tutoriel pour configurer MemSQL à partir d'une image Docker - http://docs.memsql.com/4.0/setup/docker/ . Je suis sur un Mac, et le tutoriel utilise boot2dockerce qui semble être obsolète.

La machine virtuelle a besoin de 4 Go de mémoire pour fonctionner. Le tutoriel spécifie comment faire cela avec boot2dockermais je ne trouve pas de moyen de le faire avec la boîte à outils docker-machine / docker.

Voici la commande que j'utilise et l'erreur que j'obtiens en essayant simplement de suivre le didacticiel sans modifier la configuration de boot2docker.

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

Réponses:


111

lorsque vous créez une machine docker, vous pouvez désigner la taille de la mémoire:

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

Faites-moi savoir si cela vous aide.


Cela semble définitivement être le bon endroit pour ajuster l'allocation de mémoire. Cependant, toujours la même erreur après le redémarrage de cette VM. Dans le check-systemprogramme ( github.com/memsql/memsql-docker-quickstart/blob/master/… ), je vois ces lignes qui détermineraient cette erreur. 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
Impossible de faire fonctionner cela en modifiant la configuration, mais la suppression et la recréation de la machine docker vm comme indiqué ci-dessus ont résolu le problème!
DJElbow

Bien sûr, je nettoie la deuxième façon, il semble que cela ne fonctionne plus.
BMW

178

Vous pouvez le faire via la ligne de commande. Par exemple, pour changer la machine de l'exécution par défaut de 1cpu / 2048 Mo de RAM:

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

Vous pouvez ensuite vérifier vos paramètres:

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

Et pour docker-machine inspect signaler l'état correct des choses, modifiez ~/.docker/machine/machines/default/config.jsonpour refléter vos modifications.


1
Cela a fonctionné même lorsque l'interface graphique (version 5.0.16) ne fonctionnait pas.
MikeF

6
Cette réponse devrait être au sommet
nakajuice

5
Notez qu'après l'exécution de la commande docker-machine inspect, aucun changement ne sera affiché. Cependant, si vous exécutez, docker statsvous verrez que les modifications ont été appliquées.
slovit

@slovit et autres: Vous pouvez ensuite modifier le config.jsonfichier docker-machine pour refléter la taille réelle. Exemple: pour default, comme utilisé dans l'exemple de solution, modifiez le ~/.docker/machine/machines/default/config.jsonfichier de sorte que la sous-propriété Memory(et CPUsi elle est également modifiée) sous Driversoit remplacée par 4096. Ensuite, docker-machine inspectaffichera la valeur appropriée.
ScriptAutomate

80

Pour Docker version 1.12.1 (build: 12133) et supérieur sur macOS, il existe une option pour changer le processeur et la RAM de l'interface utilisateur et redémarrer le docker. Vous pouvez trouver les préférences dans la barre d'outils. Joindre des images pour plus de clarté.

Mise à jour: août 2020: Préférences -> Ressources (merci à @ swedge218)

Ancienne étape (probablement obsolète maintenant): Préférences -> Avancé -> ajuster les ressources -> Appliquer et redémarrer

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

onglet avancé de docker (mémoire)


3
Cela a été déplacé vers l'onglet Avancé. Merci d'avoir partagé ça.
GabLeRoux

Un homme qui était à la fois évident et complètement peu intuitif - merci!
AlienWebguy

Ces modifications s'appliquent-elles également si j'utilise un dériveur avec virtualbox? Ou je devrais utiliser VBoxManage uniquement pour ajuster la taille de la mémoire?
Artur79

2
Existe-t-il une ligne de commande équivalente à cela? J'ai Docker pour mac mais apparemment, docker-machine ls ne me donne rien donc je ne peux pas modifier la machine par défaut.
Andrea Bergonzo

C'est Préférences -> Ressources à partir d'aujourd'hui.
swedge218

42

Mainteneur de Docker Machine ici. Je ne pense pas ajuster leconfig.json manuel fonctionnera.

Vos deux options sont soit de créer la machine avec --virtualbox-memoryset, soit d'ajuster la mémoire de la VM dans l'interface graphique de VirtualBox ("Paramètres> Système" pour cette VM je pense). Assurez-vous que la machine est hors tension et qu'il devrait y avoir un petit curseur qui fonctionne.

EDIT: Une autre réponse montre que vous pouvez également effectuer l'opération sur place à partir de la ligne de commande en utilisant VBoxManage.


3
Cela fonctionne mais notez que docker-machine inspectcela continuera à signaler la quantité de mémoire d'origine même après l'avoir modifiée dans l'interface graphique de VirtualBox.
Tamlyn

2
Cela est vrai, afin d'avoir un docker-machine inspectrapport le montant exact, vous ne devez modifier config.json(d'où inspectobtient ses informations).
nathanleclaire

1
Le faire dans Virtualbox est le plus simple
Niranjan Sonachalam


14

D'autres réponses ont montré comment changer la mémoire à l'aide de VBoxManage:

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

Pour confirmer la modification à partir de la ligne de commande:

VBoxManage showvminfo default | grep Memory

OU

docker-machine ssh default free

Salut cpep, pouvez-vous modifier votre réponse et formater correctement les blocs de code ?
TT.

4

fox xhyve (une autre virtualisation sous macos) vous pouvez modifier la propriété ~ / .docker / machine / default / config.json Driver / Memory (par défaut à 1024) puis redémarrer la machine docker pour appliquer les modifications


Je l'ai trouvé sous ~/.docker/machine/machines/default/config.json. Merci 👍
Tarek N.Elsamni
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.