Middle
Docker-də resursların məhdudlaşdırılması necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Docker-də resursların məhdudlaşdırılması Linux nüvəsinin namespaces və control groups (cgroups) vasitəsilə həyata keçirilir. Namespaces sistem resurslarını izolyasiya edir, cgroups isə proses qruplarının resurs istifadəsini məhdudlaşdırır, hesablayır və izolyasiya edir.
Resursların məhdudlaşdırılması üçün əsas parametrlər:
- CPU:
--cpu-shares: Məhdudiyyət zamanı konteynerlər arasında CPU-nun paylanması üçün çəkili dəyər. Əsas dəyər 1024.--cpu-quota: Müddət (--cpu-period) ərzində istifadə edilə bilən maksimum CPU vaxtı (mikrosaniyə). Əsas dəyər 100000.--cpu-period:--cpu-quotaüçün CPU dövrü (mikrosaniyə).--cpuset-cpus: Hansı CPU nüvələrinin konteynerlər tərəfindən istifadə oluna biləcəyini göstərir.
- Yaddaş:
--memory: Qəti RAM yaddaş limiti. Əgər konteyner bu limiti aşarsa, bağlana bilər.--memory-swap: RAM və swap cəmindən qəti limit.--memory-reservation: Yumşaq RAM limiti. Resurslar məhdudlaşdırıldıqda, daha az rezerve edilmiş konteynerlər əvvəl swap-a köçürülür.--kernel-memory: Kernel yaddaş limiti.--memswap-swappiness: Kernel-in bu konteyner üçün swap istifadə etməyə nə qədər həvəsləndiyi (0-dan 100-ə). 0 - çox həvəsləndirməz, 100 - çox həvəsləndirər.
- Blok I/O:
--blkio-weight: I/O-nun konteynerlər arasında paylanması üçün çəkili dəyər.--blkio-weight-device: Xüsusi cihaz üçün çəkili dəyər.--device-read-bps: Cihazdan oxuma sürəti limiti (bayt/saniyə).--device-write-bps: Cihaza yazma sürəti limiti (bayt/saniyə).--device-read-iops: Cihazdan oxuma əməliyyatlarının sayı limiti (əməliyyatlar/saniyə).--device-write-iops: Cihaza yazma əməliyyatlarının sayı limiti (əməliyyatlar/saniyə).
- Şəbəkə:
docker runbayraqları ilə birbaşa şəbəkə resurslarının məhdudlaşdırılması məhduddur. Adətən, xarici alətlər, məsələn,tc(trafik idarəetməsi), netem və ya orkestrasiya alətləri (Kubernetes NetworkPolicy) istifadə olunur.
İstifadə nümunələri:
# CPU Shares və yaddaş limiti ilə konteynerin işə salınması
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Qəti CPU Quota və yaddaş limiti ilə konteynerin işə salınması
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker bu bayraqları konteyner daxilində işləyən proses qrupunun uyğun cgroups konfiqurasiyalarına çevirir. Bu konfiqurasiyalar /sys/fs/cgroup virtual fayl sistemində (montaj zamanı) və host sistemində idarə olunur.