Middle
Kuidas toimub ressursside piiramine Dockeris?
sobes.tech AI
Vastus AI-lt
Resursside piiramine Dockeris realiseeritakse Linuxi kerni namespaces ja control groups (cgroups) kaudu. Namespaces eraldavad süsteemiressursid, samas kui cgroups piiravad, jälgivad ja eraldavad protsessirühmade ressursside kasutamist.
Resursside piiramiseks peamised parameetrid:
- CPU:
--cpu-shares: Kaalväärtus CPU jaotamiseks konteinerite vahel, kui see on piiratud. Vaikimisi väärtus on 1024.--cpu-quota: Maksimaalne CPU aeg (mikrosekundites) kasutamiseks perioodi jooksul (--cpu-period). Vaikimisi on 100000.--cpu-period: CPU periood (mikrosekundites)--cpu-quotajaoks.--cpuset-cpus: Näitab, milliseid CPU tuuma võivad konteinerid kasutada.
- Memory:
--memory: Kinnine piir RAM-ile. Kui konteiner ületab selle piiri, võib see lõpetada töö.--memory-swap: Kinnine piir RAM-i ja swap-i summa kohta.--memory-reservation: Pehme piir RAM-ile. Ressursside piiramisel, konteinerid väiksema reservation-iga tõstetakse varem swap-i, kui need suurema memory-reservation-iga.--kernel-memory: Kernel-i mälu piir.--memswap-swappiness: Kui valmis on kernel kasutama swap-i selle konteineri jaoks (0 kuni 100). 0 - väga vähe, 100 - väga palju.
- Block I/O:
--blkio-weight: Kaalväärtus I/O jaotamiseks konteinerite vahel.--blkio-weight-device: Kaalväärtus eraldi seadme jaoks block I/O.--device-read-bps: Limiteerib seadme lugemise kiirust (baiti sekundis).--device-write-bps: Limiteerib seadmesse kirjutamise kiirust (baiti sekundis).--device-read-iops: Limiteerib lugemistegevuste arvu seadmel (tegevused sekundis).--device-write-iops: Limiteerib kirjutustegevuste arvu seadmel (tegevused sekundis).
- Võrk:
- Võrguressursside piiramine otse
docker runlipudega on piiratud. Tavaliselt kasutatakse selleks väliseid tööriistu, näitekstc(traffic control), netem või orkestreerimise tööriistu (Kubernetes NetworkPolicy).
- Võrguressursside piiramine otse
Näited:
# Konteineri käivitamine CPU Shares ja mälu piirangutega
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Konteineri käivitamine range CPU Quota ja mälu piirangutega
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker teisendab need lipud vastavateks cgroups seadistusteks, mis juhivad konteineris käivitatud protsesside gruppi. Need seaded hallatakse läbi virtuaalse failisüsteemi /sys/fs/cgroup konteineris (montimise ajal) ja host-süsteemis.