Middle
Docker'da kaynak sınırlandırması nasıl yapılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Docker'da kaynak sınırlandırması, Linux çekirdeğinin namespace'leri ve kontrol grupları (cgroups) aracılığıyla gerçekleştirilir. Namespace'ler sistem kaynaklarını izole ederken, cgroups, süreç gruplarının kaynak kullanımını sınırlar, sayar ve izole eder.
Kaynak sınırlandırması için temel parametreler:
- CPU:
--cpu-shares: Sınırlı olduğunda konteynerler arasında CPU dağıtımı için ağırlıklı değer. Varsayılan değer 1024.--cpu-quota: Belirli bir dönem (--cpu-period) içinde kullanılabilecek maksimum CPU süresi (mikrosaniye cinsinden). Varsayılan 100000.--cpu-period:--cpu-quotaiçin CPU süresi dönemi (mikrosaniye cinsinden).--cpuset-cpus: Hangi CPU çekirdeklerinin konteynerler tarafından kullanılabileceğini belirtir.
- Bellek:
--memory: Sıkı bellek sınırı. Bu sınırı aşan konteyner sonlandırılabilir.--memory-swap: RAM ve swap toplamı için sıkı sınır.--memory-reservation: Yumuşak bellek sınırı. Kaynaklar sınırlandırıldığında, daha az rezerve eden konteynerler önce swap'a itilerek yer açılır.--kernel-memory: Çekirdek belleği sınırı.--memswap-swappiness: Çekirdeğin swap kullanmaya ne kadar istekli olacağı (0-100). 0 - çok az istekli, 100 - çok istekli.
- Blok I/O:
--blkio-weight: I/O'nun konteynerler arasında dağılımı için ağırlıklı değer.--blkio-weight-device: Belirli bir cihaz için ağırlıklı değer.--device-read-bps: Cihazdan okuma hız limiti (bayt/saniye).--device-write-bps: Cihaza yazma hız limiti (bayt/saniye).--device-read-iops: Cihazdan okuma işlemleri sayısı limiti (işlemler/saniye).--device-write-iops: Cihaza yazma işlemleri sayısı limiti (işlemler/saniye).
- Ağ:
docker runbayraklarıyla doğrudan ağ kaynaklarını sınırlandırmak sınırlıdır. Genellikle,tc(trafik kontrolü), netem veya orkestrasyon araçları (Kubernetes NetworkPolicy) kullanılır.
Kullanım örnekleri:
# CPU Payları ve bellek sınırı ile konteyner başlatma
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Sıkı CPU Kotası ve Bellek sınırı ile konteyner başlatma
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker, bu bayrakları, konteyner içinde çalışan süreç grubunun uygun cgroups ayarlarına dönüştürür. Bu ayarlar, konteyner içinde /sys/fs/cgroup sanal dosya sistemi aracılığıyla (montaj sırasında) ve ana sistemde yönetilir.