Middle
Docker'da resurslarni cheklash qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Docker'da resurslarni cheklash Linux yadrosi namespaces va control groups (cgroups) orqali amalga oshiriladi. Namespaces tizim resurslarini izolyatsiya qiladi, cgroups esa resurslardan foydalanishni cheklash, hisoblash va izolyatsiya qilish uchun ishlatiladi.
Resurslarni cheklash uchun asosiy parametrlar:
- CPU:
--cpu-shares: Cheklangan paytda konteynerlar orasida CPU taqsimoti uchun og'irlik qiymati. Standart qiymat 1024.--cpu-quota: Belgilangan davr (--cpu-period) davomida foydalanish mumkin bo'lgan maksimal CPU vaqti (mikrosaniyalar). Standart 100000.--cpu-period:--cpu-quotauchun CPU davri (mikrosaniyalar).--cpuset-cpus: Qaysi CPU yadro ishlatishi mumkinligini ko'rsatadi.
- Xotira:
--memory: Qattiq RAM xotira limiti. Agar konteyner bu limitni oshsa, u tugatilishi mumkin.--memory-swap: RAM va swap summasi uchun qattiq limit.--memory-reservation: Yumshoq RAM limiti. Resurslar cheklanganda, kamroq rezervatsiyaga ega konteynerlar swapga avvalroq o'tkaziladi.--kernel-memory: Kernel xotira limiti.--memswap-swappiness: Kernel bu konteyner uchun swapdan foydalanishga qanchalik tayyor (0 dan 100 gacha). 0 - juda kam tayyor, 100 - juda tayyor.
- Blok I/O:
--blkio-weight: I/O taqsimoti uchun og'irlik qiymati.--blkio-weight-device: Maxsus qurilma uchun og'irlik qiymati.--device-read-bps: Qurilma o'qish tezligi limiti (bayt/soniya).--device-write-bps: Qurilma yozish tezligi limiti (bayt/soniya).--device-read-iops: Qurilma o'qish operatsiyalarining soni limiti (operatsiyalar/soniya).--device-write-iops: Qurilma yozish operatsiyalarining soni limiti (operatsiyalar/soniya).
- Tarmoq:
docker runbayroqlari bilan to'g'ridan-to'g'ri tarmoq resurslarini cheklash cheklangan. Odatda, tashqi vositalar, masalan,tc(trafikni boshqarish), netem yoki orkestratsiya vositalari (Kubernetes NetworkPolicy) ishlatiladi.
Misollar:
# CPU Share va xotira cheklovlari bilan konteynerni ishga tushirish
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Qattiq CPU Quota va xotira cheklovlari bilan konteynerni ishga tushirish
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker bu bayroqlarni konteyner ichida ishga tushirilgan jarayonlar guruhining mos cgroups sozlamalariga aylantiradi. Bu sozlamalar /sys/fs/cgroup virtual fayl tizimi orqali (montaj qilishda) va host tizimda boshqariladi.