Middle
Hogyan történik az erőforrás-korlátozás a Dockerben?
sobes.tech MI
Válasz az MI-től
A Docker cgroups (konténercsoportok) és namespace-ek segítségével korlátozza és izolálja a konténerek erőforrásait.
- cgroups lehetővé teszik az erőforrások (CPU, memória, I/O, hálózat) használatának korlátozását és nyomon követését.
- Namespace-ek biztosítják a folyamatok, hálózat, csatolt pontok, felhasználók izolációját.
A fő erőforrás-korlátozási paraméterek:
- CPU:
--cpu-shares: Meghatározza a konténer relatív "fontosságát". A konténer a rendelkezésre álló CPU arányában kap részt, összehasonlítva más konténerekkel, amelyek--cpu-shares-t használnak. Alapértelmezett érték 1024.--cpu-quota: Korlátozza a CPU használatát abszolút értékkel mikro-szekundumban a--cpu-periodperiódus alatt. Például,--cpu-period=100000 --cpu-quota=5000050%-át jelenti egy magnak.--cpuset-cpus: Korlátozza a konténert adott processzormagokra (pl.0,1vagy0-3).--cpuset-mems: Korlátozza a konténer hozzáférését bizonyos NUMA memória csomópontokhoz.
- Memória:
--memory: Korlátozza a rendelkezésre álló RAM mennyiségét a konténer számára. Támogatott szuffikszek:b,k,m,g.--memory-swap: Beállítja az összes memória (RAM + Swap) határát. Ha kevesebb, mint--memory, a konténer nem használhat swap-ot. Ha--memory-swapnagyobb, mint--memory, akkor a különbség a maximálisan elérhető swap.--memory-swappiness: Beállítja a swappiness tényezőt a konténer számára (alapértelmezett -1, ami a hoszt beállításainak felel meg).--memory-reservation: Lágy memória-korlátozás. A konténer nem fog kevesebbet használni, mint ez az érték, ha elérhető, de többet is fogyaszthat, ameddig az--memoryérték engedi. A rendszer megpróbálja fenntartani ezt az értéket nyomás alatt.--kernel-memory: Korlátozza a kernel memória használatát a konténer számára.
- I/O (Blokk I/O):
--blkio-weight: Meghatározza az arányos súlyt a blokk alapú bemenet/kimenet számára (alapértelmezett 500). Hatással van az I/O sávszélesség elosztására.--blkio-weight-device: Beállítja a súlyt egy adott blokk eszközre.--device-read-bps/--device-write-bps: Korlátozza az olvasási/írási sebességet (byte/sec) egy adott eszközre.--device-read-iops/--device-write-iops: Korlátozza az olvasási/írási műveletek számát másodpercenként egy adott eszközön.
- Hálózat:
Szó szerinti korlátozás a hálózati interfészek konfigurálásával a hálózati namespace-ben vagy operációs rendszer szintű eszközökkel (pl.
tc).
Használati példa:
# Konténer indítása CPU (50% egy mag) és memória (512MB) korlátozással
docker run -d --name my_limited_app \
--cpu-quota=50000 --cpu-period=100000 \
--memory=512m \
my_image:latest
# Konténer indítása CPU korlátozással 0 és 1 magokra, 1GB memória és blokk súly 700
docker run -d --name another_limited_app \
--cpuset-cpus="0,1" \
--memory=1g \
--blkio-weight=700 \
another_image:latest