Wie verhindere ich, dass der Docker-Dienst immer den gesamten ihm zugewiesenen RAM auf meinem Host verwendet?

Wie verhindere ich, dass der Docker-Dienst immer den gesamten ihm zugewiesenen RAM auf meinem Host verwendet?

Der Docker-Dienst unter Windows 10 scheint immer die maximale Speichermenge zu verwenden, die er zuweisen darf. Als ich beispielsweise den Speicher im Abschnitt Ressourcen -> Erweitert von 2 GB auf 8 GB erhöhte und auf „Übernehmen und neu starten“ klickte, passierte im Taskmanager Folgendes:

Bildbeschreibung hier eingeben

Wie kann ich Docker dazu bringen, Speicher nur dann zu verwenden, wenn er von laufenden Containern benötigt wird, anstatt ihn einfach komplett zu verbrauchen?

Es werden aktuell keine Container ausgeführt, nur der Dienst.

Antwort1

Zwar unterscheidet sich Docker von der vollständigen Hardwarevirtualisierung, es funktioniert jedoch in vielerlei Hinsicht und aus den gleichen Gründen gleich.

Hypervisoren reservieren die angegebene Speichermenge, damit dieser Speicher ihnen und den Containern (oder virtuellen Maschinen) bei Bedarf zur Verfügung steht, ohne dass sie diesen Speicher beim Betriebssystem anfordern müssen.

Die von Ihnen festgelegte Einstellung dient speziell diesem Zweck und verhält sich aus genau diesem Grund genau so, wie Sie es beobachtet haben. Es handelt sich nicht um einen Fehler, und um das Verhalten zu ändern, müssen Sie das grundlegende Verhalten von Docker neu schreiben.

Es ist also nichts kaputt und alles verhält sich wie es soll.

Ich empfehle Ihnen dringend, sich über Speicherreservierungen in Docker zu informieren, um besser zu verstehen, wie und warum. Docker ist ein ausgereiftes Produkt und, wie ich annehme, gut dokumentiert.

Um das aufgetretene Problem zu „lösen“, installieren Sie mehr Speicher oder planen Sie Ihren Docker-Speicherbedarf sorgfältiger und verwenden Sie diese Einstellung wie vorgesehen und nicht nur aus einer Laune heraus, wie Sie es jetzt tun.

Antwort2

Das Ausführen der neueren Versionen von Docker Desktop mit dem WSL2-Backend löst dieses Problem. Ich kann nicht viel mehr Details dazu geben, da ich es selbst nicht so gut verstehe, aber ich habe WSL2 installiert und festgestellt, dass Docker jetzt Speicher dynamisch zuweist.

Docker Desktop verwendet die dynamische Speicherzuweisungsfunktion in WSL 2, um den Ressourcenverbrauch erheblich zu verbessern. Das bedeutet, dass Docker Desktop nur die erforderliche Menge an CPU- und Speicherressourcen verwendet und gleichzeitig CPU- und speicherintensive Aufgaben wie das Erstellen eines Containers viel schneller ausführen kann.

Quelle:Docker Desktop WSL 2-Backend

verwandte Informationen