180 votes

Comment attribuer plus de mémoire à un conteneur Docker

Comme le titre l'indique, j'essaie d'assigner plus de mémoire à mon conteneur. J'utilise une image de Docker Hub appelée "aallam/tomcat-mysql" au cas où cela serait pertinent.

Lorsque je le démarre normalement sans aucun drapeau spécial, il y a une limite de mémoire de 2 Go (même si j'ai lu que la mémoire est illimitée si elle n'est pas définie)

Voici mes statistiques Docker

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 Mio / 1.952 Gio    7.29%               508 o / 508 o       0 o / 6.91 Mo        68

J'ai essayé de définir explicitement la mémoire de la même manière mais avec les mêmes résultats

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

J'ai lu que peut-être la VM est ce qui restreint cela. Mais pourquoi les statistiques Docker montrent-elles que la limite de taille du conteneur est de 2 Go ?

284voto

Robert Points 357

Cette limite de 2GB que vous voyez est la mémoire totale de la machine virtuelle dans laquelle docker s'exécute.

Si vous utilisez docker-for-windows ou docker-for-mac, vous pouvez facilement l'augmenter à partir de l'icône Whale dans la barre des tâches, puis allez dans Préférences -> Avancé :

Préférences de Docker

Mais si vous utilisez VirtualBox en arrière-plan, ouvrez VirtualBox, Sélectionnez et configurez la mémoire assignée à la machine docker.

Consultez ceci pour Mac :

https://docs.docker.com/docker-for-mac/#advanced

MÉMOIRE Par défaut, Docker pour Mac est configuré pour utiliser 2 Go de mémoire d'exécution, alloués à partir de la mémoire totale disponible sur votre Mac. Vous pouvez augmenter la RAM de l'application pour obtenir des performances plus rapides en définissant ce nombre plus élevé (par exemple à 3) ou plus bas (à 1) si vous voulez que Docker pour Mac utilise moins de mémoire.

Pour Windows :

https://docs.docker.com/docker-for-windows/#advanced

Mémoire - Modifiez la quantité de mémoire utilisée par la machine virtuelle Linux Docker pour Windows

117 votes

Comment faites-vous cela sans l'interface graphique ?

17 votes

@Philippe, quel est votre cas d'utilisation? Docker pour Windows ou docker pour Mac est livré avec guli. Je pense que votre cas concerne Docker natif sur Linux (sans aucune machine virtuelle, ce qui est le cas pour les systèmes de production/cloud). Dans de tels cas, vous n'avez pas besoin de configurer la mémoire de la machine virtuelle car Docker utilise entièrement la machine pour ses besoins.

11 votes

Oui, j'ai compris cela plus tard. Donc si je veux que mon conteneur Docker ait >4 Go de RAM, je n'ai rien à faire si je développe sous Linux?

30voto

Market Queue Points 81

Allouez la mémoire maximale à votre machine Docker à partir des préférences de Docker -> avancées)

Capture d'écran des paramètres avancés: Capture d'écran des paramètres avancés.

Cela fixera la limite maximale que Docker consommera lors de l'exécution des conteneurs. Maintenant, exécutez votre image dans un nouveau conteneur avec le drapeau -m=4g pour 4 Go de RAM ou plus. par exemple.

docker run -m=4g {imageID}

N'oubliez pas d'appliquer les modifications d'augmentation de la limite de RAM. Redémarrez Docker et vérifiez que la limite de RAM a été augmentée. Cela peut être l'un des facteurs pour lesquels vous ne voyez pas l'augmentation de la limite de RAM dans les conteneurs Docker.

24voto

Si vous souhaitez modifier le conteneur par défaut et que vous utilisez Virtualbox, vous pouvez le faire via la ligne de commande / CLI:

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

5voto

Derek Soike Points 3634

Captures d'écran pour Docker Desktop V3.3.3 (Mac)

Menu déroulant de Docker Desktop

Préférences de Docker Desktop

0 votes

Merci pour votre réponse! Cela fonctionne pour moi sur bigSur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X