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

Beispiel für einen Vue-Übergang zum Erreichen eines Animationseffekts

Inhaltsverzeichnis Ergebnisse auf einen Blick Her...

Verschiedene korrekte Haltungen zur Verwendung von Umgebungsvariablen in Webpack

Inhaltsverzeichnis Schreiben Sie vor Geschäftscod...

So gehen Sie mit vergessenen Passwörtern in Windows Server 2008 R2 um

Was tun, wenn Sie Windows Server 2008R2 vergessen...

Vue-Komponente kapselt Beispielcode zum Hochladen von Bildern und Videos

Laden Sie zuerst die Abhängigkeiten herunter: cnp...

So importieren und exportieren Sie Docker-Images

Dieser Artikel stellt den Import und Export von D...

So aktivieren Sie die MySQL-Remoteverbindung auf einem Linux-Server

Vorwort Lernen Sie MySQL, um frühere Nicht-MK-Dat...

Navigationsdesign und Informationsarchitektur

<br />Wenn wir über Navigation sprechen, geh...

Bearbeiten Sie zwei Datenspalten als neue Spalten in SQL

Wie unten dargestellt: wähle a1,a2,a1+a2 a,a1*a2 ...

Detaillierte Erläuterung der CSS-Bildspleißtechnologie (Sprite-Bild)

CSS-Bildspleißtechnologie 1. Bildzusammenfügung B...

MySQL-Fehler 1290 (HY000) Lösung

Ich habe lange mit einem Problem gekämpft und das...