GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So legen Sie das Docker-Speicher- und CPU-Nutzungslimit fest

Einführung

Standardmäßig haben Docker-Container Zugriff auf die vollen RAM- und CPU-Ressourcen des Hosts. Wenn Sie sie mit diesen Standardeinstellungen laufen lassen, kann es zu Leistungsengpässen kommen.

Wenn Sie die Speicher- und CPU-Auslastung von Docker nicht einschränken, kann Docker alle Systemressourcen verwenden.

In diesem Tutorial erfahren Sie, wie Sie die Speicher- und CPU-Auslastung von Docker-Containern begrenzen.

Konfigurieren Sie das System, um die Begrenzung der Ressourcen zu aktivieren

Bevor Sie einen Container mit begrenzten Ressourcen ausführen können, prüfen Sie, ob Ihr System diese Docker-Option unterstützt. Diese Anleitung zeigt Ihnen, wie Sie dies in Ubuntu tun und wie Sie diese Funktion bei Bedarf aktivieren.

1. Führen Sie zuerst den folgenden Befehl aus:

sudo docker info

Wenn Sie die Ausgabe WARNING: No swap limit support erhalten , die Ressourcenbegrenzung ist standardmäßig nicht aktiviert.

2. Um diese Option hinzuzufügen, bearbeiten Sie die Grub-Konfigurationsdatei. Öffnen Sie die Datei in einem Texteditor Ihrer Wahl (wir verwenden nano):

sudo nano /etc/default/grub

3. Fügen Sie dann die folgende Zeile hinzu:

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Speichern Sie die Änderungen und beenden Sie die Datei.

5. Aktualisieren Sie dann die Grub-Konfiguration mit dem Befehl:

sudo update-grub

6. Starten Sie abschließend Ihren Computer neu, damit die Änderungen wirksam werden.

7. Um zu überprüfen, ob Sie die angegebene Docker-Funktion erfolgreich aktiviert haben, führen Sie docker info erneut aus Befehl.

Speicherzugriff für Docker-Container beschränken

Es gibt mehrere RAM-Einschränkungen, die Sie für einen Docker-Container festlegen können. Einige davon sind:

  • Konfigurieren der maximalen Speichermenge, die ein Container verwenden kann.
  • Definieren der Speichermenge, die ein Docker-Container auf die Festplatte auslagern kann.
  • Festlegen des weichen Limits für die einem Container zugewiesene Speichermenge.

Unten erfahren Sie, wie Sie Docker-Speicherbeschränkungen konfigurieren.

Maximalen Speicherzugriff festlegen

Um die maximale Speichernutzung für einen Container zu begrenzen, fügen Sie --memory hinzu Option zum docker run Befehl. Alternativ können Sie die Tastenkombination -m verwenden .

Geben Sie innerhalb des Befehls an, wie viel Speicher Sie diesem bestimmten Container zuweisen möchten.

Der Befehl sollte der Syntax folgen:

sudo docker run -it --memory="[memory_limit]" [docker_image]

Der Wert von memory_limit sollte eine positive ganze Zahl gefolgt vom Suffix b sein , k , m , oder g (kurz für Bytes, Kilobytes, Megabytes oder Gigabytes). Um den Container beispielsweise auf 1 GB RAM zu begrenzen, fügen Sie --memory="1g" hinzu .

Um beispielsweise eine Instanz eines Ubuntu-Containers auszuführen und das Speicherlimit auf 1 GB festzulegen, lautet der Befehl:

sudo docker run -it --memory="1g" ubuntu

Festlegen des Swap-to-Disk-Speicherlimits

Mit dem swap Option können Sie Daten auch dann speichern, wenn der gesamte dem Container zugewiesene RAM aufgebraucht ist. Dies geschieht, indem die Speicherbeschränkung ignoriert und direkt auf die Festplatte geschrieben wird. Obwohl dies eine nützliche Funktion ist, wird sie nicht empfohlen, da sie die Leistung verlangsamt.

Um diesen zusätzlichen RAM-Speicherplatz zu konfigurieren, definieren Sie die Gesamtgröße des Auslagerungsspeichers. Bevor Sie dies tun, sollten Sie bereits über den maximalen Arbeitsspeicher verfügen (--memory ) des Non-Swap-Memory-Sets. Der Swap umfasst die Gesamtmenge des Nicht-Swap-Speichers plus die Menge an Auslagerungsspeicher als Backup reserviert.

Wenn Sie beispielsweise --memory festlegen auf 1 GB , wie im obigen Beispiel, muss die Größe des Auslagerungsspeichers größer sein. Um einen Container mit einem zusätzlichen auszuführen 1 GB des Auslagerungsspeichers, stellen Sie den Auslagerungsspeicher auf 2 GB ein .

Die Syntax zum Ausführen eines Containers mit begrenztem Speicher und zusätzlichem Auslagerungsspeicher lautet:

sudo docker run -it --memory="[memory_limit]" --memory-swap="[memory_limit]" [docker_image]

Um beispielsweise einen Container aus dem Ubuntu-Image auszuführen, dem Container 1 GB RAM zuzuweisen und 1 GB RAM für den Auslagerungsspeicher zu reservieren, geben Sie Folgendes ein:

sudo docker run -it --memory="1g" --memory-swap="2g" ubuntu

Soft-Limit für Containerspeicher festlegen

Begrenzen der Speichernutzung eines Containers mit --memory setzt im Wesentlichen eine harte Grenze, die nicht überschritten werden kann. Alternativ können Sie ein weiches Limit festlegen (--memory-reservation ), die warnt, wenn der Container das Ende seines zugewiesenen Speichers erreicht, aber keinen seiner Dienste stoppt.

Wenn --memory Beschränkungen siehe nicht gesetzt sind, setzen Sie die weiche Grenze mit --memory-reservation schränkt den Containerraum nicht vollständig ein. Wenn Sie beide Funktionen aktiviert haben, ist das Soft Limit immer niedriger als die maximale Speicherplatzkapazität.

Als Beispiel für einen Ubuntu-Container mit einer Speicherreservierung von 750 MB und die maximale RAM-Kapazität von 1 GB , verwenden Sie den Befehl:

sudo docker run -it --memory="1g" --memory-reservation="750m" ubuntu

CPU-Auslastung des Docker-Containers begrenzen

Genau wie die RAM-Nutzung haben Docker-Container keine Standardbeschränkungen für die CPU des Hosts. Wenn Containern eine unbegrenzte CPU-Auslastung zugewiesen wird, kann dies zu Problemen führen.

Es gibt mehrere Möglichkeiten zu definieren, wie viel CPU-Ressourcen vom Host-Rechner Sie Containern zuweisen möchten.

Wenn Sie beispielsweise einen Host mit 2 CPUs haben und einem Container Zugriff auf eine davon gewähren möchten, verwenden Sie die Option --cpus="1.0" . Der Befehl zum Ausführen eines Ubuntu-Containers mit Zugriff auf 1 CPU wäre:

sudo docker run -it --cpus="1.0" ubuntu

Sie können auch --cpu-shares verwenden Möglichkeit, dem Container einen größeren oder geringeren Anteil an CPU-Zyklen zu geben. Standardmäßig ist dies auf 1024 eingestellt .

Um einen Container mit geringeren CPU-Anteilen auszuführen, führen Sie Folgendes aus:

sudo docker run -it --cpus-shares="700" ubuntu

Weitere Optionen zum Einschränken der Container-CPU-Nutzung finden Sie in der offiziellen Docker-Dokumentation.


Ubuntu
  1. So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung

  2. Wie begrenzen Pipelines die Speichernutzung?

  3. CPU-Auslastung und Speicherauslastung eines einzelnen Prozesses unter Linux abrufen?

  4. Wie kann die Speichernutzung der Anwendung begrenzt werden?

  5. Wie kann die Speichernutzung nach Anwendung in Linux begrenzt werden?

So begrenzen Sie die CPU-Auslastung mit CPULimit unter Ubuntu Linux

So erhöhen Sie Speicher und CPU auf Vagrant Machine

So finden Sie die Top 10 der laufenden Prozesse nach Speicher- und CPU-Auslastung

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux

Speicherlimit und CPU-Limit im Docker-Container

Wie sind CPU-Zeit und CPU-Auslastung gleich?