Docker Nedir?
Docker, uygulamaların geliştirildiği, test edildiği ve dağıtıldığı ortamları standartlaştırmak amacıyla kullanılan bir konteynerleştirme platformudur. Uygulamalar, Docker konteynerleri içerisinde çalışarak, sistem kaynaklarını verimli bir şekilde kullanılmasını sağlar. Docker, uygulama bağımlılıklarının ve yapılandırmalarını izole ederek, taşınabilirlik ve ölçeklenebilirlik sunar.
Kaynak Limitleri Neden Önemlidir?
Konteyner kaynak limitleri, CPU, bellek (RAM) ve disk alanı gibi sistem kaynaklarının kullanımını kontrol etmek için kritik öneme sahiptir. Uygulama performansı ve sistem kararlılığı üzerinde doğrudan etkiye sahip olan bu limitler, birden fazla konteynerin aynı anda çalıştığı sistemlerde kaynakların verimli dağıtımını sağlamak açısından gereklidir. Bu sayede, tek bir konteynerin aşırı kaynak kullanımı, diğer konteynerlerin çalışmasını olumsuz etkilemez.
Docker’da Kaynak Limitleri Belirleme
Docker, konteyner kaynak limitlerini belirlemek için çeşitli parametreler sunar. Bu parametreler, `docker run` komutu ile konteyner oluşturulurken kullanılabilir. Aşağıdaki parametreler, kaynak limitlerini tanımlamak için yaygın olarak kullanılır:
– `–memory`: Konteynerin kullanabileceği maksimum bellek miktarını belirler. Örnek kullanım: `–memory=”512m”`.
– `–cpus`: Konteynerin kullanabileceği maksimum CPU zamanı miktarını belirler. Örnek kullanım: `–cpus=”1.5″`.
– `–cpu-shares`: Konteynerin CPU kaynaklarına erişim önceliğini ayarlar. Varsayılan değer 1024’tür. Örnek kullanım: `–cpu-shares=512`.
– `–oom-kill-disable`: Bu opsiyon, Out Of Memory (OOM) durumunda konteynerin durdurulmasını engeller.
Örnek Kullanım
Konteyner yaratırken yukarıdaki kaynak limitlerini kullanarak örnek bir komut şu şekilde oluşturulabilir:
“`bash
docker run -d –name my_container –memory=”256m” –cpus=”1″ my_image
“`
Bu komut, `my_container` adında bir konteyner oluşturur ve bu konteynerin 256 MB bellek ve 1 CPU zamanına erişim hakkı olduğunu belirtir.
Kaynak Limitlerini Güncelleme
Var olan bir konteyner için kaynak limitlerini güncellemek mümkündür. Bunun için `docker update` komutu kullanılabilir. Örnek kullanım:
“`bash
docker update –memory=”512m” my_container
“`
Yukarıdaki komut, `my_container` isimli konteynerin bellek limitini 512 MB olarak günceller. Ancak, güncelleme işlemi yapılabilmesi için konteynerin çalışıyor durumda olması gerekmektedir.
Limitlerin İzlenmesi
Konteynerlerin kaynak kullanımını izlemek önemlidir. Docker, çalışan konteynerlerin kaynak kullanımını görüntülemek için `docker stats` komutunu sunar. Bu komut, her bir konteynerin anlık bellek ve CPU kullanımını gösterir. Örnek kullanım:
“`bash
docker stats
“`
Bu komut, tüm aktif konteynerlerin kaynak kullanım bilgilerini listeleyecektir. Kullanıcı, spesifik konteynerler için de bu bilgileri alabilir.
Uygulama ve Deneysel Limitler
Yalnızca bellek ve CPU gibi temel kaynak limitleri değil, aynı zamanda disk alanı ve ağ kaynakları için de limitler belirlemek mümkündür. Disk alanı için `–storage-opt` parametresi kullanılabilir. Ağ kaynak limitleri ise Docker’ın varsayılan ağ ayarları ile yapılandırılabilir.
OOM Durumları ve Yönetimi
Out Of Memory (OOM) durumları, bellek limitlerini aşan konteynerlerin sistem tarafından kapatılmasıyla sonuçlanabilir. Bu tür durumların önüne geçmek için bellek limitlerinin dikkatli bir şekilde belirlenmesi ve izlenmesi önemlidir. `–oom-kill-disable` parametresi kullanarak OOM durumunda konteynerin kapanmasını engellemek mümkündür, ancak bu durum sistem üzerindeki etkileri dikkate alınarak karar verilmesi gereken bir durumdur.
Sonuç
Docker konteyner kaynak limitleri yönetimi, konteyner tabanlı uygulama mimarilerinde kritik bir rol oynamaktadır. CPU, bellek gibi temel kaynakların yanı sıra disk ve ağ limitleriyle birlikte, uygulama performansının ve sistem kararlılığının sağlanmasına katkıda bulunur. Doğru limitlerin belirlenmesi, izlenmesi ve güncellenmesi, sistem kaynaklarının verimli kullanılmasını ve çoklu konteyner ortamlarının yönetimini kolaylaştırmaktadır. Docker, sunduğu fonksiyonlar sayesinde bu kaynak yönetimi süreçlerini etkin bir şekilde destekler.