Middle
Hogyan történik az erőforrások korlátozása a Dockerben?
sobes.tech MI
Válasz az MI-től
A Docker erőforrás-korlátozása a Linux kernel namespace-eken és control groups (cgroups) segítségével valósul meg. A namespace-ek izolálják a rendszer erőforrásait, míg a cgroups korlátozzák, nyilvántartják és izolálják a folyamatcsoportok erőforrás-használatát.
A fő paraméterek az erőforrások korlátozására:
- CPU:
--cpu-shares: Súlyérték a CPU elosztásához a konténerek között, amikor az korlátozott. Alapértelmezett érték 1024.--cpu-quota: Maximális CPU idő (mikroszekundumokban), amit a--cpu-periodalatt használhatnak. Alapértelmezett 100000.--cpu-period: A CPU időszak (mikroszekundumokban) a--cpu-quota-hoz.--cpuset-cpus: Megmutatja, mely CPU magokat használhatják a konténerek.
- Memória:
--memory: Szilárd RAM memóriahatár. Ha a konténer ezt meghaladja, leállhat.--memory-swap: A RAM és swap összegének szilárd határa.--memory-reservation: Puha RAM memóriahatár. Erőforrás-korlátozás esetén a kisebb foglalással rendelkező konténerek előbb kerülnek swap-ra, mint a nagyobbmemory-reservation-nel rendelkezőek.--kernel-memory: A kernel memóriahatár.--memswap-swappiness: Mennyire hajlandó a kernel swap-ot használni ehhez a konténerhez (0-tól 100-ig). 0 - nagyon nem hajlandó, 100 - nagyon hajlandó.
- Blokkoló I/O:
--blkio-weight: Súlyérték az I/O elosztásához a konténerek között.--blkio-weight-device: Súlyérték egy adott blokk eszközhöz.--device-read-bps: Az eszköz olvasási sebességének határa (byte/sec).--device-write-bps: Az eszköz írási sebességének határa (byte/sec).--device-read-iops: Az eszköz olvasási műveletek száma (műveletek/sec).--device-write-iops: Az eszköz írási műveletek száma (műveletek/sec).
- Hálózat:
- A hálózati erőforrások közvetlen korlátozása a
docker runzászlókkal korlátozott. Általában külső eszközöket használnak, példáultc(traffic control), netem vagy orkestrációs eszközöket (Kubernetes NetworkPolicy).
- A hálózati erőforrások közvetlen korlátozása a
Használati példák:
# Konténer indítása CPU Share és memória korlátozással
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Konténer indítása szigorú CPU Quota és memória korlátozással
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
A Docker ezeket a zászlókat megfelelő cgroups beállításokra alakítja át a konténeren belüli folyamatcsoport számára. Ezek a beállítások a /sys/fs/cgroup virtuális fájlrendszeren keresztül kezelhetők a konténeren belül (csatoláskor) és a gazda rendszeren egyaránt.