Middle
Kā tiek veikts resursu ierobežojums Docker?
sobes.tech AI
Atbilde no AI
Resursu ierobežojums Docker tiek īstenots, izmantojot Linux kodola namespaces un control groups (cgroups). Namespaces izolē sistēmas resursus, bet cgroups ierobežo, uzrauga un izolē resursu izmantošanu procesu grupām.
Galvenie parametri resursu ierobežošanai:
- CPU:
--cpu-shares: Svars vērtība CPU sadalījumam starp konteineriem, kad tas ir ierobežots. Noklusējuma vērtība ir 1024.--cpu-quota: Maksimālais CPU laika daudzums (mikrosekundēs) izmantošanai periodā (--cpu-period). Noklusējuma vērtība ir 100000.--cpu-period: Laika periods CPU (mikrosekundēs)--cpu-quota.--cpuset-cpus: Norāda, kuri CPU kodoli var izmantot konteinerus.
- Memory:
--memory: Ciets limits operatīvajai atmiņai. Ja konteineris pārsniedz šo limitu, tas var tikt pārtraukts.--memory-swap: Ciets limits operatīvās atmiņas un swap summā.--memory-reservation: Mīksts limits operatīvajai atmiņai. Ierobežojot resursus, konteineriem ar mazāku reservation tiks ātrāk pārvietoti uz swap nekā tiem ar lielāku memory-reservation.--kernel-memory: Kodola atmiņas limits.--memswap-swappiness: Cik gatavs kodols izmantot swap šim konteinerim (no 0 līdz 100). 0 - ļoti maz, 100 - ļoti daudz:
- Block I/O:
--blkio-weight: Svars vērtība I/O sadalījumam starp konteineriem.--blkio-weight-device: Svars vērtība atsevišķai blokierīcei.--device-read-bps: Limits lasīšanas ātrumam no ierīces (baiti sekundē).--device-write-bps: Limits rakstīšanas ātrumam uz ierīces (baiti sekundē).--device-read-iops: Limits lasīšanas operāciju skaitam no ierīces (operācijas sekundē).--device-write-iops: Limits rakstīšanas operāciju skaitam uz ierīces (operācijas sekundē).
- Tīkls:
- Tīkla resursu ierobežojumi tieši caur
docker runkarogiem ir ierobežoti. Parasti to dara ar ārējiem rīkiem, piemēram,tc(traffic control), netem vai orkestrācijas rīkiem (Kubernetes NetworkPolicy).
- Tīkla resursu ierobežojumi tieši caur
Piemēri:
# Konteineru ar CPU Shares un atmiņas ierobežojumu
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Konteineru ar stingru CPU Quota un atmiņu
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker šos karogus pārveido atbilstošos cgroups iestatījumos, kas kontrolē procesu grupu konteinerā. Šie iestatījumi tiek pārvaldīti caur /sys/fs/cgroup virtuālo failu sistēmu konteinerā (montēšanas laikā) un uz hosta sistēmas.