Docker CPU and Memory Limit

Docker container’lar, çalıştıkları host sistemin CPU ve bellek (RAM) kaynaklarını varsayılan olarak sınırsız kullanabilir. Bu durum özellikle:

  • Aynı host üzerinde birden fazla container çalışıyorsa
  • Production (canlı) sistemlerde
  • Kaynak tüketimi öngörülemeyen uygulamalarda

performans sorunlarına, sistem kilitlenmelerine ve servis kesintilerine yol açabilir.

Bu nedenle Docker, her container için CPU ve Memory limitleri tanımlamamıza imkân verir.

Docker, Linux kernel’in cgroups (Control Groups) mekanizmasını kullanır. cgroups sayesinde:

  • Bir container’ın ne kadar CPU kullanabileceği
  • En fazla ne kadar RAM ayırabileceği
  • Bellek sınırını aşarsa ne olacağı

kontrol altına alınır.

⚠️ Önemli: Docker kendi başına kaynak üretmez, sadece host’un kaynaklarını sınırlar ve paylaştırır.

Çalışan Bir Docker Container’ın CPU ve RAM Kullanımı Nasıl Değiştirilir?

Kaynak Çalışırken Değiştirilebilir mi?
CPU limit ✅ Evet
Memory (RAM) limit ❌ Hayır (Container Baştan Oluşturmak Gerekir.)

Docker Memory Limit (RAM)

Memory limit, bir container’ın kullanabileceği maksimum RAM miktarını belirler. Eğer container bu limiti aşarsa: Kernel OOM Killer (Out Of Memory) devreye girer ve Container otomatik olarak durdurulur.

Docker container üzerinde Memory Limit Kullanmak için aşağıdaki komutu baz alabilirsiniz. Aşağıdaki oluşacak container en fazla 512 MB RAM kullanabilir. (Örnek, (512 MB RAM için --memory=512m) (1 GB RAM için --memory=1g)

docker run -d --memory="512m" --name web nginx 

Docker stats komutu ile limiti görebilirsiniz.

Docker Memory Swap ise Container RAM limitini aşınca yedek alan gibi çalışır. Performansı ciddi şekilde düşürür, ama container’ın hemen ölmesini engelleyebilir. 

Docker’da swap kullanımı şu iki parametreyle kontrol edilir:

Parametre Açıklama
--memory Fiziksel RAM limiti
--memory-swap RAM + swap toplam limit
  • Temel mantık → memory-swap = RAM + Swap

Aşağıdaki komut baz alınarak uygulama yapabilirsiniz.

docker run -d --memory=512m --memory-swap=512m nginx

Docker CPU Limit

CPU limit bir containerın, kaç çekirdek, ne kadar işlem gücü kullanabileceğini belirler.

Docker container üzerinde CPU Limit Kullanmak için aşağıdaki komutu baz alabilirsiniz. Aşağıdaki oluşacak container sistemde kaç tane core varsa en fazla maksimum 1.5 CPU core kullanabilir. Yani 8 core ise bunun 1.5 tanesini kullanacaktır.

docker run -d --cpus="1.5" --name web nginx 
  • Örneğin, 2 core’a izin verilen bir container %200’e kadar çıkabilir

Buna ek olarak belirli cpu'nun belirli core'larını kullanda diyebilirsiniz. Yani 8 core varsa siz core 0 ve core 3 üzerinden kullan diyebilirsiniz.

docker run -d --cpus="1.5" --cpuset-cpus="0,3" --name web nginx 

Container’a hangi CPU ayarlarını verdiğini görmek için aşağıdaki komutu kullanabilirsiniz.

docker inspect container_name | grep -i cpu 
  • 1.5 CPU = 1_500_000_000 NanoCPU
Blog'a Dön