2
votes

Le bureau Docker consomme toute la mémoire et plante

Utilisation de Docker Desktop (19.03.13) avec 6 conteneurs sous Windows 10. Disposer de 16 Go de RAM.

Dans les docker stats chaque conteneur consomme 20-500 Mo, tous ensemble cunsume ~ 1 Go.

Mais dans le gestionnaire de tâches, le docker mange ~ 10 Go et se bloque par manque de mémoire système.

Comment vérifier, ce qui consomme autant de mémoire dans Docker? Et comment éviter cela?


8 commentaires

quelle est votre version Windows? (je veux dire la construction)? consultez également ce lien docs.docker.com/docker-for-windows/troubleshoot


Version 1703 de Windows (build du système d'exploitation 15063.2108)


Par défaut, tout conteneur Docker peut consommer autant de matériel tel que le processeur et la RAM. Si vous exécutez plusieurs conteneurs sur le même hôte, vous devez limiter la quantité de mémoire qu'ils peuvent consommer.


J'ai limité tous les conteneurs à 1 Go dans Paramètres - Ressources. Pas aidé.


Settings - Resources limitent les ressources de toute la machine Docker sur laquelle les conteneurs sont exécutés. Vous avez donc aggravé les choses, car tous les conteneurs consomment ensemble ~ 1 Go et votre machine Docker a également une limite de 1 Go. @Ashok a pointé son commentaire sur la limitation du conteneur - docs.docker.com/engine/reference/run / ...


En mode d'isolation Hyper-V (par défaut), Windows réserve la mémoire de chaque conteneur.Par conséquent, si vous définissez une limite de 1 Go, 10 conteneurs devraient avoir besoin d'environ 10 Go de RAM. docs.microsoft.com/en-us/virtualization/windowscontainers/... Si vous utilisez des images basées sur Linux, vous devez utiliser docker avec WSL2 (Windows build 2004)


Je n'ai que 6 conteneurs. Aussi dans "docker stats", chaque conteneur consomme 20-500 Mo. Il ne peut donc pas s'agir de 10 Go de RAM.


Avez-vous supprimé tous vos anciens conteneurs arrêtés? Vérifiez docker ps -a . S'il y en a plus, vos six conteneurs en cours d'exécution exécutent docker rm $(docker ps -a -q) pour supprimer tous les conteneurs présents (en cours d'exécution inclus). Si le problème persiste, essayez de supprimer tous les réseaux inutilisés en exécutant l' docker network prune . Je ne pense pas que ce soit quelque chose de spécifique à Windows car je rencontre parfois le même problème dans OSX - d'après mon expérience, il est lié au fait de ne pas arrêter correctement les conteneurs. Peut-être que cela aidera :)


3 Réponses :


0
votes

Je suppose que sur Windows, il y a quelque chose de similaire à ce qui existe sur MacOS.

  1. Ouvrez votre application docker et accédez au tableau de bord
  2. Cliquez sur n'importe quel conteneur
  3. Cliquez sur Stats

Vous obtiendrez des informations concernant votre CPU, l'utilisation de la RAM, la mémoire de lecture et d'écriture du disque et l'utilisation du réseau.

entrez la description de l'image ici

Lorsque j'avais des problèmes de mémoire, ce que j'avais l'habitude de faire fréquemment, je configurais des scripts d'alias que je pouvais enchaîner pour arrêter / tuer / redémarrer et faire ce que j'avais besoin de configurer sur les conteneurs.

Rien n'empêche le docker de se comporter comme il se comporte à moins que vous ne souhaitiez commencer à contribuer et à faire des pull requests. Ce n'est pas un problème rare. Docker est un service gratuit, je recommande de contourner ses lacunes.


0 commentaires

0
votes

Comme je le sais, les statistiques de docker ne montrent pas les réservations de RAM. Essayez de mettre des limites de RAM en utilisant l'option -m. Il existe des informations sur la façon de contrôler les ressources à l'aide de docker: https://docs.docker.com/config/containers/resource_constraints/?spm=a2c41.12663380.0.0.59ed566dAqUZPu


0 commentaires

0
votes

Je suppose que vous utilisez le nouveau moteur basé sur WSL 2, essayez de basculer le moteur docker vers Hyper-V en ouvrant les docker settings -> general -> décochez Use WSL 2 based Engine .

Expliquer:

J'ai remarqué que cela a commencé à m'arriver depuis l'introduction du moteur WSL 2, je suis automatiquement passé à celui-ci car c'est un nouveau moteur; Des problèmes de mémoire ont commencé à survenir depuis lors.

Le redémarrage / la fermeture du docker n'a pas libéré la mémoire et j'ai remarqué que dans le gestionnaire de tâches, Vemm était celui qui mangeait toute la mémoire, donc j'ai dû le forcer à le fermer (le docker ne fonctionnait pas).

La dernière chose que j'ai faite a été de basculer le moteur de docker vers Hyper-V a résolu mon utilisation élevée de la mémoire.


0 commentaires