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.
DJElbow
la source

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.

BMW
la source
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.

Ran Rubinstein
la source
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)

Srikar Appalaraju
la source
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.

nathanleclaire
la source
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
cpep
la source
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

dchekmarev
la source
Je l'ai trouvé sous ~/.docker/machine/machines/default/config.json. Merci 👍
Tarek N.Elsamni