it-swarm.com.de

Speicherlimit und CPU-Limit im Docker-Container

AKTUALISIEREN:

zu diesem Thema gab es viele Fragen und Diskussionen zu stackoverflow. Und obwohl sie als von Tausenden von Benutzern als akzeptiert markiert und gestartet sind, scheinen sie hier nicht die richtige Antwort zu sein.


Ich habe einen Docker-Container (Version 1.13.1, Build 092cba3) mit Ressourceneinschränkungen wie folgt ausgeführt:

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -m 4096M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 -p $IMAGE_NAME

Das Host-System (RHEL 7) verfügt über 4 Kerne und 8 GB Speicher. Grundsätzlich möchte ich den verfügbaren Speicher und die CPU für den Container einschränken. Nachdem der Container erfolgreich gestartet wurde, öffnete ich die Bash und versuchte, die Grenzwertinformationen aus dem Container herauszufinden. Ich konnte jedoch nicht die richtigen Informationen erhalten.

Ich habe das versucht:

Sudo cat /proc/meminfo

Das Ergebnis ist:

Hostsystem MemTotal: 8008812 kB MemFree: 7416404 kB MemAvailable: 7537332 kB
Docker Container MemTotal: 8008812 kB MemFree: 7318052 kB MemAvailable: 7498764 kB

Ebenso wollte ich ein CPU-Limit bekommen:

grep -c ^processor /proc/cpuinfo

Das Ergebnis ist:

Hostsystem 4
Docker Image 4

Es scheint, dass das von Container erzwungene CPU- und Arbeitsspeicherlimit vom Container nicht sichtbar ist. Ich habe auch versucht, cgroup-Informationen abzufragen.

mkdir -p /tmp/memory
mount -n -t cgroup -o memory cgroup /tmp/memory

Dann schaue ich in die cgroup-Dateien:

[[email protected] memory]# cat /tmp/memory/memory.limit_in_bytes
9223372036854771712

Diese Anzahl ist größer als der tatsächliche Speicher des Host-Systems.

Gibt es eine Möglichkeit, zu überprüfen, ob die Ressourceneinschränkungen korrekt im Container festgelegt wurden? Wie finde ich die Informationen zur Ressourceneinschränkung in einem Container? Schätzen Sie jeden Vorschlag.

3
mattsun

AKTUALISIEREN

Dies ist die Antwort, die funktioniert: https://stackoverflow.com/a/41827812/3209177


Ich habe gerade diese Antwort gefunden:

Speicher auf einem Docker-Container beschränken funktioniert nicht

Ich werde es versuchen und komme mit meiner Beobachtung zurück.

0
mattsun

ich versuche diesen Befehl dies mein Docker Host es funktioniert Docker Run -it -d -m 100M --cpuset-cpus = '0' --cpus = 1 --cpu-shares = 256 --name testet Ubuntu/bin/bash

docker stats testing

1
Thol Voleak