Limiter la consommation de RAM de Docker
Publié le 16/06/2023
Par  Christophe MOMMER

Que ça soit dit, j'utilise quotidiennement Docker et j'aime cet outil. C'est d'ailleurs le sujet de mon premier livre. Je trouve que c'est un outil merveilleux pour les développeurs, car non seulement on peut tester nos applications en isolation, mais on peut aussi installer des services en isolation sans dégueulasser son système avec plein de services, clés de registres et autres fichiers.

Bref, c'est un must-have !

Depuis quelques années maintenant, sous Windows, Docker ne tourne plus Hyper-V mais sous WSL (Windows Subsystem for Linux). En gros, un noyau Linux qui tourne dans Windows. C'est bien mieux pour la perf (pas d'émulation) mais par contre, WSL2 peut être très très gourmand.

Le problème

Récemment, j'ai acquis un kit de RAM de 96 Go pour des besoins pros sur ma machine. Avant, j'étais à 64 Go, et WSL2 avec Docker prenait leur place : entre 8 et 10 Go de RAM. Or, je ne fais tourner qu'un SQL Server pour les tests dans mes containers donc pas la peine de prendre autant. En passant à 96 Go, je pensais ressentir moins l'effet de WSL2.

Sauf que voilà : + de RAM = + de consommation ! Il est passé entre 16 et 18 Go, car il avait plus de place. C'était juste impossible pour moi de bloquer autant de RAM pour Docker sachant que je n'en avais pas besoin.

La solution (sous Windows)

Heureusement, il est possible de domestiquer Docker (enfin, WSL2) pour lui dire de ne pas prendre plus de RAM qu'une certaine limite (ce qui peut être ultra pratique selon la taille de votre machine).

Pour ce faire, il faut créer un petit fichier appelé ".wslconfig" (qui n'est rien d'autre qu'un fichier ini dans sa structure) et y ajouter le contenu suivant :

[wsl2]
memory=4GB

Ce fichier doit être placé dans votre répertoire utilisateur (comme par exemple C:\users\Chris pour moi).

Une fois que c'est fait, quittez WSL2 en ouvrant une invite de commande (en admin de préférence) et en lançant cette commande : wsl --shutdown

Docker risque de ne pas apprécier, pensez à le killer, puis relancez-le.

Normalement, à partir de là, sa consommation est maîtrisée, vous pouvez voir sur le tableau de bord que la taille maximum est limitée à ce que vous avez mis dans le fichier.

Ouf !

PS : si vous voulez limiter aussi le nombre de core de votre CPU, c'est avec processors=2