Sobes.tech
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-quota jaoks.
    • --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 run lipudega on piiratud. Tavaliselt kasutatakse selleks väliseid tööriistu, näiteks tc (traffic control), netem või orkestreerimise tööriistu (Kubernetes NetworkPolicy).

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.