Middle
Kako se vrši ograničenje resursa u Dockeru?
sobes.tech АИ
Одговор од АИ
Ograničenje resursa u Docker-u realizuje se putem namespaces i control groups (cgroups) Linux jezgra. Namespaces izoliraju sistemske resurse, a cgroups ograničavaju, prate i izoliraju korišćenje resursa za grupe procesa.
Ključni parametri za ograničenje resursa:
- CPU:
--cpu-shares: Vaga vrednost za raspodelu CPU između kontejnera kada je ograničen. Podrazumevana vrednost je 1024.--cpu-quota: Maksimalno vreme CPU (u mikrosekundama) za korišćenje tokom perioda (--cpu-period). Podrazumevano je 100000.--cpu-period: Period vremena CPU (u mikrosekundama) za--cpu-quota.--cpuset-cpus: Navodi koja CPU jezgra mogu koristiti kontejneri.
- Memory:
--memory: Čvrto ograničenje na RAM. Ako kontejner pređe ovo ograničenje, može biti zaustavljen.--memory-swap: Čvrto ograničenje na zbir RAM-a i swap-a.--memory-reservation: Meko ograničenje na RAM. Pri ograničenju resursa, kontejneri sa manjim reservation biće ranije prebačeni u swap nego oni sa većim memory-reservation.--kernel-memory: Ograničenje na memoriju jezgra.--memswap-swappiness: Koliko će jezgro biti spremno da koristi swap za ovaj kontejner (od 0 do 100). 0 - vrlo nevoljno, 100 - vrlo voljno.
- Block I/O:
--blkio-weight: Vaga vrednost za raspodelu I/O između kontejnera.--blkio-weight-device: Vaga vrednost za pojedinačno uređaj blok I/O.--device-read-bps: Limit brzine čitanja sa uređaja (u bajtovima u sekundi).--device-write-bps: Limit brzine zapisivanja na uređaj (u bajtovima u sekundi).--device-read-iops: Limit broja operacija čitanja sa uređaja (operacije u sekundi).--device-write-iops: Limit broja operacija zapisivanja na uređaj (operacije u sekundi).
- Mreža:
- Ograničenje mrežnih resursa direktno putem
docker runzastavica je ograničeno. Obično se za to koriste spoljašnji alati, na primer,tc(traffic control), netem ili alati za orkestraciju (Kubernetes NetworkPolicy).
- Ograničenje mrežnih resursa direktno putem
Primeri upotrebe:
# Pokretanje kontejnera sa ograničenjem CPU Shares i memorije
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Pokretanje kontejnera sa čvrstim limitom CPU Quota i memorije
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker pretvara ove zastavice u odgovarajuće postavke cgroups za grupu procesa pokrenutu unutar kontejnera. Ove postavke se upravljaju putem virtuelnog fajl sistema /sys/fs/cgroup unutar kontejnera (pri montiranju) i na host sistemu.