Docker CPU ve bellek kullanımı nasıl kontrol edilir? Bu eğitimde Docker konteyner RAM ve CPU kullanımını nasıl kontrol edeceğinizi öğreneceksiniz. Tıpkı Linux/Windows sistemlerinizdeki kaynak kullanımını nasıl izleyeceğiniz/kontrol edeceğiniz gibi, konuşlandırdığınız Docker konteynerlerinin her birinin ne kadar RAM veya CPU yüzdesi tükettiğini de kontrol etmek mümkündür. Bu, ana sunucunuzun kaynak kapasitesini önceden planlamanıza olanak tanır.
Docker Konteyner RAM ve CPU Kullanımını Kontrol Etme
Peki Docker konteyner RAM ve CPU kullanımını nasıl kontrol edebilirsiniz? Docker, konteynerlerin çalışma zamanı ölçümlerinin canlı akışını kolayca görüntülemenizi sağlayan bir istatistik komut seçeneğiyle birlikte gelir.
Komut;
docker stats
Liman işçisi istatistikleri, CPU ve bellek kullanım istatistiklerinin yanı sıra konteyner bellek sınırını ve ağ IO ölçümlerini de gösterebilir.
docker stats
komut satırı kullanımı
Komut kullanımı yardımını görmek için şunu çalıştırın;
docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
Docker Containers Genel Metriklerini Göster
Basit kullanımında, tüm konteynerlerin çalışma zamanı ölçümlerini görüntüleme seçeneği olmadan komutu kolayca çalıştırabilirsiniz!
docker stats
Komut, tıpkı top/htop komutları gibi kapsayıcıların çalışma zamanı ölçümlerinin canlı akışını görüntüler.
Örnek çıktı;
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b46dce1fc33c dozzle 0.00% 4.582MiB / 1.929GiB 0.23% 7.89kB / 2.42kB 0B / 0B 8
1421e6e27733 nagios-core-4.4.9 0.04% 31.03MiB / 1.929GiB 1.57% 26.6kB / 44.7kB 75.8MB / 8.22MB 13
–no-stream seçeneğini geçerek canlı ekranı devre dışı bırakabilirsiniz. Bu, komutu çalıştırdığınız ve çıktığınız andaki konteyner ölçümlerini gösterecektir;
docker stats --no-stream
Peki komut çıktısının sütunları ne anlama geliyor?
CONTAINER ID | Konteyner kimliğini gösterir |
Name | Konteynerin adını gösterir |
CPU % | Konteynerin kullandığı ana bilgisayar CPU’sunun yüzdesini gösterir |
MEM % | Konteynerin kullandığı ana bilgisayar RAM’inin yüzdesini gösterir |
MEM USAGE / LIMIT | Kabın kullandığı toplam RAM miktarını ve kullanmasına izin verilen toplam RAM miktarını gösterir |
NET I/O | Konteynerin ağ arayüzü üzerinden gönderdiği ve aldığı veri miktarını gösterir |
BLOCK I/O | Konteynerin ana bilgisayardaki blok cihazlardan okuduğu ve yazdığı veri miktarını gösterir |
PIDs | Kapsayıcının ilgili kapsayıcı içinde oluşturduğu işlem veya iş parçacığının sayısını gösterir |
Belirli Docker Container’ın Kaynak Kullanımını Gösterme
Docker istatistikleri komutunu kullanarak belirli Docker kapsayıcısının kaynak kullanımını göstermek için, komuta Docker kapsayıcısı adını veya kimliğini eklemeniz yeterlidir;
docker stats [container_ID|container_NAME]
Örneğin;
docker stats dozzle
Aynı komutta birden fazla konteyner;
docker stats dozzle nagios-core-4.4.9
Veya;
docker stats b46dce1fc33c
Birden fazla konteyner kimliği;
docker stats b46dce1fc33c 1421e6e27733
Belirli Docker Konteynerinin Özel Kaynak Kullanımını Göster
Çıktıyı bir Go şablonu kullanarak yazdıran –format seçeneğini kullanarak belirli bir kapsayıcı için CPU %’si veya RAM vb. gibi belirli kaynak kullanımını da gösterebilirsiniz.
–format seçenekleri, görüntülenen her metrik için ilgili bir yer tutucuya sahiptir;
Placeholder | Description |
---|---|
.Container | Kapsayıcı adı veya kimliği (kullanıcı girişi) |
.Name | Konteyner adı |
.ID | Container ID |
.CPUPerc | CPU yüzdesi |
.MemUsage | Hafıza kullanımı |
.NetIO | Ağ GÇ |
.BlockIO | Blok IO |
.MemPerc | Bellek yüzdesi (Windows’ta mevcut değildir) |
.PIDs | PID Sayısı (Windows’ta mevcut değildir) |
–format seçeneğini şu şekilde kullanırsınız;
docker stats --format "{{.Container}}[delimeter]{{.Placeholder-1}}[delimeter]{{.Placeholder-2}}"
- [sınırlayıcı] herhangi bir şey olabilir, boşluk ( ), sekme (\t), dikey çizgi (|), virgül (,), iki nokta üst üste (:) vb.
- {{.Placeholder-N}} yukarıdaki yer tutuculardan herhangi biri olabilir
Tüm konteynerlerin CPU kullanımını görüntülemek için;
docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream
Örnek çıktı;
b46dce1fc33c 0.00%
1421e6e27733 0.04%
Spesifik konteyner için;
docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream <container-name|ID>
Örneğin;
docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream dozzle
Örnek çıktı;
dozzle:0.00%
Gördüğünüz gibi sonuç boşluk sınırlayıcıyla ayrılmıştır. Ancak sütun başlığı adı yoktur.
Sütunların adlarını göstermek için tablo seçeneğini komuta iletin;
docker stats --format "table {{.Container}}[delimeter]{{.Placeholder-1}}[delimeter]{{.Placeholder-2}}"
Örneğin, CPU kullanımının sekmeyle ayrılmış sonuçlarını göstermek için, tüm kapsayıcıların RAM Kullanımı;
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}"
Örnek çıktı;
CONTAINER CPU % MEM %
b46dce1fc33c 0.00% 0.23%
1421e6e27733 0.02% 1.58%
İstatistik çıktısında kapsayıcı kimliğini veya Adını görüntülemek istemiyorsanız, {{.Container}} seçeneğini atlayın;
docker stats --format "{{.MemPerc}}" <container-name|ID>
Örneğin
docker stats --no-stream --format "{{.MemPerc}}" dozzle
Örnek çıktı;
0.23%
Pseudofiles’tan Docker Container Kaynak Kullanımını Göster
Ayrıca Docker konteyner metriklerini Pseudo-filesystems aracılığıyla açığa çıkan kontrol gruplarından da kontrol etmek mümkündür. Kontrol grupları, Docker konteyner ana bilgisayar sisteminde /sys/fs/cgroup dizini altında bulunur.
Her belirli Docker kapsayıcısı için bellek, CPU, blok G/Ç ile ilgili metrik, /sys/fs/cgroup/system.slice/ altında sırasıyla Memory.stat, cpu.stat, io.stat gibi sahte dosyalar aracılığıyla gösterilir. docker-LONG_CONTAINER_ID.scope/ dizini
Uzun Docker konteyner kimliklerini almak için;
docker ps --no-trunc --format "{{.Names}}\t{{.ID}}"
Örnek çıktı;
dozzle b46dce1fc33c05232120a8b317785b13aaf749728e70a17cb3d4c32366ad4c77
nagios-core-4.4.9 1421e6e27733bf9c60378fe5b435528bfbe33af75c2b0abd2500a2281eb2a4f8
Böylece, örneğin bireysel konteyner metriklerini alabilirsiniz;
cat /sys/fs/cgroup/system.slice/docker-b46dce1fc33c05232120a8b317785b13aaf749728e70a17cb3d4c32366ad4c77.scope/cpu.stat
usage_usec 466029
user_usec 425019
system_usec 41009
nr_periods 0
nr_throttled 0
throttled_usec 0
cat /sys/fs/cgroup/system.slice/docker-b46dce1fc33c05232120a8b317785b13aaf749728e70a17cb3d4c32366ad4c77.scope/memory.stat
anon 4370432
file 0
kernel_stack 131072
pagetables 98304
percpu 72
sock 0
shmem 0
file_mapped 0
file_dirty 0
file_writeback 0
swapcached 0
anon_thp 0
file_thp 0
shmem_thp 0
inactive_anon 4366336
active_anon 4096
inactive_file 0
active_file 0
unevictable 0
slab_reclaimable 71688
slab_unreclaimable 124968
slab 196656
workingset_refault_anon 0
workingset_refault_file 0
workingset_activate_anon 0
workingset_activate_file 0
workingset_restore_anon 0
workingset_restore_file 0
workingset_nodereclaim 0
pgfault 3029
pgmajfault 0
pgrefill 0
pgscan 0
pgsteal 0
pgactivate 0
pgdeactivate 0
pglazyfree 0
pglazyfreed 0
thp_fault_alloc 0
thp_collapse_alloc 0
İşte Docker konteyner RAM’i ve CPU kullanımının nasıl kontrol edileceği ile ilgili konu budur.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.