So verwenden Sie Docker, um Containerressourcen zu begrenzen

So verwenden Sie Docker, um Containerressourcen zu begrenzen

Problem beim Gucken

Angenommen, der IIS-Dienst stellt auf dem Server mehrere Sites bereit. Wenn eine der Sites ein Problem hat (z. B. die CPU ist zu 100 % ausgelastet oder der Speicher voll), stürzen auch die anderen Sites auf diesem Server ab. Ähnlich verhält es sich bei der Verwendung von Containern: Dutzende von Containern können auf einem einzigen Host laufen. Obwohl die Container voneinander isoliert sind, verwenden sie denselben Kernel, dieselbe CPU, denselben Speicher, dieselbe Festplatte und andere Hardwareressourcen wie der Host. Wenn die Containerressourcen nicht eingeschränkt sind, beeinflussen sich die Container gegenseitig.

Lösung

Docker bietet Methoden zur Begrenzung von Speicher, CPU oder Festplatten-E/A, wodurch die Größe und Menge der vom Container belegten Hardwareressourcen begrenzt werden können. Wir können die Hardwareressourcen dieses Containers begrenzen, wenn wir Docker Create zum Erstellen eines Containers oder Docker Run zum Ausführen eines Containers verwenden.

Speichergrenzen

Die von Docker bereitgestellten Speicherbegrenzungsfunktionen sind wie folgt:

1. Die Speicher- und Swap-Partitionsgröße, die der Container verwenden kann.

2. Die Kernspeichergröße des Containers.

3. Auslagerungsverhalten des virtuellen Containerspeichers.

4. Weiche Begrenzung des Containerspeichers.

5. Ob Container beendet werden sollen, die zu viel Speicher belegen.

6. Priorität bei der Containervernichtung

-m, --memory Speicherlimit, das Format ist eine Zahl plus eine Einheit, die Einheit kann b, k, m, g sein. Mindestens 4M
--memory-swap Gesamtspeicherlimit + Größe der Swap-Partition. Gleiches Format wie oben. Erforderlich: -m legt die weiche Grenze für den Speicher fest. Gleiches Format wie oben --oom-kill-disable Gibt an, ob OOM-Killer das Töten von Containern verhindern soll. Standardmäßig nicht festgelegt. --oom-score-adj Die Priorität des Containers, der vom OOM-Killer getötet wird. Der Bereich liegt zwischen [-1000 und 1000], der Standardwert ist 0.
--memory-swappiness wird verwendet, um das virtuelle Speichersteuerungsverhalten des Containers festzulegen. Der Wert ist eine Ganzzahl zwischen 0 und 100. --kernel-memory Kernel-Speicherlimit. Gleiches Format wie oben, Mindestgröße ist 4M

Das Benutzerspeicherlimit dient zur Begrenzung der Größe des Speichers und der Swap-Partition, die der Container verwenden kann.
Bei der Verwendung sind zwei intuitive Regeln zu beachten:

Der Mindestparameter der Option -m, --memory beträgt 4 M.
--memory-swap ist nicht die Swap-Partition, sondern die Gesamtgröße des Speichers plus der Swap-Partition, also muss --memory-swap größer sein als -m, --memory.

CPU-Limit

Alle Optionen im Zusammenhang mit dem Docker-Run-Befehl und dem CPU-Limit lauten wie folgt:

--cpuset-cpus="" Die Menge der CPUs, die verwendet werden dürfen, der Wert kann 0-3,0,1 sein.
-c, --cpu-shares=0 CPU-Anteilsgewicht (relatives Gewicht)
cpu-period=0 begrenzt die CPU-CFS-Periode und liegt zwischen 100 ms und 1 s, d. h. [1000, 1000000]
--cpu-quota=0 Begrenzt das CPU-CFS-Kontingent, darf nicht weniger als 1 ms betragen, d. h. >= 1000
--cpuset-mems="" Ausführung auf Speicherknoten (MEMs) zulassen, nur gültig für NUMA-Systeme

Mit --cpuset-cpus werden die vCPU-Kerne festgelegt, die der Container verwenden kann. -c, --cpu-shares wird verwendet, um den relativen Anteil der CPU-Zeit festzulegen, der jedem Container zugewiesen werden kann, wenn mehrere Container um die CPU konkurrieren. --cpu-perioden und --cpu-quata werden verwendet, um die absolute Menge an CPU-Zeit festzulegen, die ein Container verwenden kann.

Dies ist das Ende dieses Artikels über die Verwendung von Docker zur Begrenzung von Containerressourcen. Weitere Informationen zu Ressourcenbeschränkungen für Docker-Container finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker und iptables sowie Implementierung von Netzwerkisolations- und Kommunikationsvorgängen im Bridge-Modus
  • Netzwerkmanagement und Netzwerkisolationsimplementierung von Docker-Containern
  • So isolieren Sie Benutzer in Docker-Containern
  • Docker Ändern des Docker-Speicherorts Ändern der Größenbeschränkung für Container-Images
  • Implementierung des Docker-CPU-Limits
  • So begrenzt Docker die für Container verfügbare CPU
  • So begrenzen Sie den für einen Container in Docker verfügbaren Speicher
  • Einführung in die Isolations- und Einschränkungsprinzipien von Docker

<<:  Reines js, um den Effekt eines Karussells zu erzielen

>>:  Detaillierte Erklärung zum CSS-Randkollaps

Artikel empfehlen

MySQL-Index für Anfänger

Vorwort Da die wichtigste Datenstruktur im MySQL-...

Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Problemhintergrund: Wenn Sie Docker zum Bereitste...

So installieren Sie JDK und Mysql auf dem Linux-System Ubuntu 18.04

Plattformbereitstellung 1. JDK installieren Schri...

IE6 BUG und Fix ist eine vorbeugende Strategie

Originalartikel: Ultimatives IE6-Cheatsheet: So b...

Verwendung der hasOwnProperty-Methode des js-Attributobjekts

Die Methode hasOwnProperty() des Objekts gibt ein...

Grundlegendes Tutorial zur Verwendung der Explain-Anweisung in MySQL

Inhaltsverzeichnis 1. Übersicht 1. Aussagetest er...

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

Hinweise zur IE8-Kompatibilität, die mir aufgefallen sind

1. getElementById von IE8 unterstützt nur IDs, nic...

Erläuterung der MySQL-Leistungsprüfung durch den Befehl „show processlist“

Der Befehl „show processlist“ ist sehr nützlich. ...