15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
17.09.2025
5 +1

Container Nedir? Container Sanallaştırma Prensipleri Açıklandı

Konteyner teknolojisi, geliştiricilerin uygulamaları nasıl oluşturduğunu, gönderdiğini ve çalıştırdığını temelden değiştirmiştir. WordPress sitesi, Node.js API veya tam yığın e-ticaret platformu dağıtıyor olsanız da, konteynerler geleneksel sanal makinelere kıyasla daha hızlı, daha güvenilir ve daha taşınabilir bir alternatif sunar. Bu rehber, konteynerların tam olarak ne olduğunu, arka planda nasıl çalıştığını ve 2025’te maksimum sonuçlar için yüksek performanslı altyapıda nasıl yararlanabileceğinizi açıklamaktadır.

İçindekiler

  1. Konteyner Nedir?
  2. Konteynerler vs. Sanal Makineler
  3. Konteynerların Temel Özellikleri
  4. Konteyner Sanallaştırması Nasıl Çalışır
  5. Popüler Konteyner Teknolojileri
  6. Konteynerizasyonun Temel Avantajları
  7. AlexHost Altyapısında Konteyner Çalıştırma
  8. Sonuç

Konteyner Nedir?

Bir konteyner, bir uygulamayı tüm bağımlılıklarıyla — kütüphaneler, yapılandırma dosyaları, çalışma zamanı ortamları ve ikili dosyalar — tek bir taşınabilir yapıya paketleyen standartlaştırılmış, kendi kendine yeterli bir yazılım birimidir. Uygulamanın ihtiyaç duyduğu her şey konteyner içinde paketlendiğinden, konteynerizasyonu destekleyen herhangi bir ortamda hızlı, öngörülebilir ve aynı şekilde çalışır.

Uygulamaların temel alınan ana bilgisayar yapılandırmasına yoğun şekilde bağlı olduğu geleneksel dağıtım modellerinden farklı olarak, konteynerler çevresel tutarsızlıkları soyutlar. Sonuç, daha hızlı gönderilen, daha kolay ölçeklenen ve hata ayıklaması çok daha basit olan bir dağıtım modelidir.

> Temel tanım: Konteyner sanal makine değildir. Paylaşılan bir işletim sistemi çekirdeğinin üstünde kullanıcı alanında çalışan hafif, yalıtılmış bir işlemdir.

Konteynerler vs. Sanal Makineler

Konteynerizasyon ilkelerine dalmadan önce konteynerler ve sanal makineler (VM) arasındaki farkı anlamak gereklidir.

ÖzellikKonteynerlerSanal Makineler
OS ÇekirdeğiAna bilgisayarla paylaşılanVM başına ayrı
Başlangıç SüresiMilisaniye ile saniyeDakika
Disk Ayak İziMegabaytGigabayt
İzolasyon Seviyesiİşlem seviyesiDonanım seviyesi
TaşınabilirlikÇok yüksekOrta
Kaynak YüküÇok düşükYüksek
Kullanım DurumuMikro hizmetler, CI/CD, ölçeklemeTam OS izolasyonu, eski uygulamalar

Sanal makineler tüm donanım yığınını sanallaştırır ve örnek başına tam bir konuk işletim sistemi gerektirir. Konteynerler ise ana bilgisayar OS çekirdeğini paylaşır ve yalnızca uygulamanın kullanıcı alanını izole eder. Bu, konteynerları dramatik şekilde daha hafif ve hızlı kılarken yine de iş yükleri arasında anlamlı izolasyon sağlar.

Bununla birlikte, VM’ler ve konteynerler birbirini dışlamaz. VPS Barındırma ve Özel Sunucular da dahil olmak üzere birçok üretim ortamı, donanım seviyesi izolasyonun güvenlik avantajlarını konteynerizasyonun çevikliğiyle birleştirmek için sanal makinelerin *içinde* konteyner çalıştırır.

Konteynerların Temel Özellikleri

3.1 Hafif Mimari

Konteynerler yalnızca uygulama kodunu ve doğrudan bağımlılıklarını içerir. Tam bir işletim sistemi paketlemezler, bu da şu anlama gelir:

  • Başlangıç süreleri dakika değil, milisaniye ile saniye cinsinden ölçülür.
  • Görüntü boyutları tipik olarak 5 MB ile birkaç yüz MB arasında olup, VM görüntüleri için birkaç GB ile karşılaştırılır.
  • Kaynak tüketimi önemli ölçüde daha düşüktür, aynı donanımda yalnızca bir avuç VM’yi destekleyebilecek yüzlerce konteyner çalıştırmanıza olanak tanır.

Bu hafif yapı, konteynerları mikro hizmetler mimarileri için ideal kılar; burada düzinelerce küçük, bağımsız hizmetin paylaşılan altyapıda bir arada bulunması gerekir.

3.2 Taşınabilirlik

Konteynerların en çekici özelliklerinden biri taşınabilirliğidir. Bir geliştirici dizüstü bilgisayarında oluşturulan bir konteyner görüntüsü aynı şekilde çalışacaktır:

  • Yerel test ortamında
  • Hazırlama sunucusunda
  • Üretim bulut örneğinde
  • Çıplak metal Özel Sunucu

Bu “bir kez oluştur, her yerde çalıştır” ilkesi, yazılım ekiplerini on yıllardır rahatsız eden klasik “makinemde çalışıyor” sorununu ortadan kaldırır. Konteyner görüntüleri değişmez yapılardır — ortamlar arasında değişmezler, bu da hata ayıklamayı, geri alma işlemlerini ve denetimi dramatik şekilde basitleştirir.

3.3 İzolasyon

Konteynerler işlem seviyesi izolasyonu sağlayarak, ayrı konteynerler içinde çalışan uygulamaların birbirini etkileyememesini sağlar. Her konteyner kendi öğelerine sahiptir:

  • Dosya sistemi görünümü
  • Ağ arabirimleri
  • İşlem ağacı
  • Ortam değişkenleri ve yapılandırma

Bu izolasyon hem güvenliği hem de istikrarı artırır. Bir konteyner içindeki çökme veya bellek sızıntısı komşu konteynerler içine yayılmaz. Çok kiracılı ortamlar veya hassas veriler işleyen uygulamalar için bu sınır kritiktir.

Konteyner Sanallaştırması Nasıl Çalışır

Konteyner izolasyonu sihir değildir — yıllardır var olan belirli Linux çekirdeği özellikleri üzerine kuruludur. Bu mekanizmaları anlamak, konteynerların gerçekte ne olduğu ve davranışları hakkında nasıl düşüneceğiniz konusunda çok daha net bir resim verir.

4.1 Linux Ad Alanları

Ad alanları, Linux çekirdeğinin konteynerler arasında izolasyon sağladığı birincil mekanizmadır. Ad alanı belirli bir küresel sistem kaynağını sarar ve her konteyneye o kaynağın kendi yalıtılmış görünümünü sunar.

Konteynerizasyonda kullanılan temel ad alanları şunlardır:

  • PID Ad Alanı — İşlem kimliklerini izole eder. Her konteyner PID 1’den başlayan kendi işlem ağacına sahiptir. Konteyner içindeki işlemler diğer konteynerler veya ana bilgisayarda çalışan işlemleri göremez veya sinyal gönderemez.
  • NET Ad Alanı — Her konteynerine kendi ağ yığınını verir; sanal ağ arabirimleri, IP adresleri, yönlendirme tabloları ve güvenlik duvarı kuralları dahil. İki konteyner her biri port 80’e bağlanabilir ve çakışmaz.
  • MNT Ad Alanı — Bir konteyner tarafından görülen dosya sistemi bağlama noktalarını izole eder; her birine dizin ağacının kendi görünümünü sağlar.
  • UTS Ad Alanı — Her konteyner için ana bilgisayar sisteminden bağımsız olarak kendi ana bilgisayar adı ve etki alanı adına sahip olmasını sağlar.
  • IPC Ad Alanı — İşlemler arası iletişim kaynakları; ileti kuyrukları ve paylaşılan bellek segmentleri gibi izole eder.
  • Kullanıcı Ad Alanı — Konteyner içindeki kullanıcı ve grup kimliklerini ana bilgisayardaki farklı kimliklerle eşler; konteynerler içinde kök olarak çalışırken ana bilgisayarda ayrıcalıksız olmalarını sağlar.

Birlikte, bu ad alanları, aynı temel çekirdeği paylaşırken her konteyner için tamamen ayrı bir işletim ortamının yanılsamasını yaratır.

4.2 Kontrol Grupları (cgroups)

Ad alanları *bir konteyner neyi görebilir* ile ilgilenirken, kontrol grupları (cgroups) *bir konteyner neyi kullanabilir* ile ilgilenir. Cgroups, işletim sisteminin işlem grupları için kaynak kullanımını tahsis etmesine, sınırlandırmasına ve izlemesine izin veren bir Linux çekirdeği özelliğidir.

Cgroups ile, konteyner başına sınırları uygulayabilirsiniz:

  • CPU — CPU payları atayın veya bir konteyner diğerlerini açlıktan ölüme mahkûm etmesini önlemek için sabit sınırlar koyun.
  • Bellek — Maksimum RAM kullanımını ayarlayın; sınırlarını aşan konteynerler öldürülür veya kısıtlanır.
  • Disk I/O — Tek bir konteyner depolamayı doyurmayı önlemek için okuma/yazma verimini kısıtlayın.
  • Ağ bant genişliği — Konteyner başına giden ve gelen trafiği hız sınırlandırın.

Cgroups, tek bir sunucuda öngörülebilir, adil kaynak dağılımı ile düzinelerce konteyner çalıştırmayı mümkün kılar. Onlar olmadan, tek bir kötü davranan konteyner tüm kullanılabilir CPU veya belleği tüketebilir ve tüm ana bilgisayarı çökertebilir.

4.3 Birleşim Dosya Sistemleri (UnionFS)

Konteynerler birleşim dosya sistemleri — ayrıca katman dosya sistemleri olarak da adlandırılır — depolama katmanını verimli bir şekilde yönetmek için kullanır. Birleşim dosya sistemi, birden fazla dizin ağacının (*katmanlar* olarak adlandırılır) üst üste yığılmasına ve tek bir birleştirilmiş dosya sistemi olarak sunulmasına izin verir.

Docker ile pratikte nasıl çalıştığı aşağıda açıklanmıştır:

  1. Bir temel görüntü katmanı (örn. Ubuntu 22.04) salt okunur ve onu kullanan tüm konteynerler arasında paylaşılır.
  2. Ek görüntü katmanları üzerine yığılır — her biri bir paketi yükleme veya uygulama kodunu kopyalama gibi bir değişikliği temsil eder.
  3. Konteyner başladığında, üzerine ince bir yazılabilir katman eklenir. Konteyner yaşamı boyunca yapılan tüm değişiklikler yalnızca bu katmana yazılır.
  4. Konteyner silindiğinde, yazılabilir katman atılır. Temel salt okunur katmanlar bozulmadan kalır ve diğer konteynerler tarafından yeniden kullanılabilir.

Bu katmanlı yaklaşım birkaç avantaj sağlar:

  • Depolama verimliliği — Ortak katmanlar birçok konteyner arasında paylaşılır; disk kullanımını dramatik şekilde azaltır.
  • Hızlı görüntü oluşturma — Yalnızca değiştirilen katmanların yeniden oluşturulması veya indirilmesi gerekir.
  • Değişmezlik — Temel katmanlar asla değiştirilmez; görüntüleri yeniden üretilebilir ve denetlenebilir kılar.

Popüler birleşim dosya sistemi uygulamaları OverlayFS (modern Docker’da varsayılan), AUFS ve Btrfs‘i içerir.

Popüler Konteyner Teknolojileri

Konteyner ekosistemi hızla olgunlaştı. Karşılaşacağınız en yaygın olarak benimsenen teknolojiler şunlardır:

Docker

Docker, konteyner oluşturma ve çalıştırma için fiili standarttır. 2013’te tanıtılan, konteyner modelini popülerleştirdi ve etrafında zengin bir ekosistem oluşturdu; buna şunlar dahildir:

  • Docker Engine — Tek bir ana bilgisayarda konteyner oluşturan ve çalıştıran çalışma zamanı.
  • Docker Hub — Yüzbinlerce önceden oluşturulmuş görüntü içeren genel kayıt defteri.
  • Docker Compose — Basit bir YAML dosyası kullanarak çok konteynerli uygulamaları tanımlamak ve çalıştırmak için bir araç.
  • Dockerfile — Konteyner görüntüsünün tam olarak nasıl oluşturulduğunu tanımlayan bildirimsel bir derleme betiği.

Docker, konteynerizasyonda yeni olan herkes için doğal başlangıç noktasıdır ve geliştirme iş akışları ve tek ana bilgisayar dağıtımları için baskın araç olmaya devam eder.

Kubernetes

Kubernetes (K8s), başlangıçta Google tarafından geliştirilen açık kaynaklı bir konteyner orkestrasyonu platformudur. Docker konteynerları tek bir ana bilgisayarda yönetirken, Kubernetes konteynerları makinelerin *kümeleri* arasında yönetir.

Kubernetes’in temel özellikleri şunlardır:

  • Otomatik dağıtım ve geri alma işlemleri — Uygulamanızın yeni sürümlerini sıfır kapalı kalma süresi ile dağıtın.
  • Yatay ölçekleme — CPU kullanımı veya özel ölçümlere göre konteyner örneklerini otomatik olarak ekleyin veya kaldırın.
  • Kendi kendini iyileştirme — Başarısız konteynerları otomatik olarak yeniden başlatın ve sağlıklı düğümlerde yeniden planlayın.
  • Hizmet keşfi ve yük dengeleme — El ile yapılandırma olmadan konteynerler için trafiği otomatik olarak yönlendirin.
  • Gizli dizi ve yapılandırma yönetimi — API anahtarları ve veritabanı parolaları gibi hassas verileri güvenli bir şekilde saklayın.

Kubernetes, üretim sınıfı konteyner orkestrasyonu için endüstri standardı ve çoğu modern bulut-yerel mimarinin omurgasıdır.

OpenShift

Red Hat OpenShift, saf Kubernetes’in üzerine görüşlü bir araç katmanı ekleyen kurumsal bir Kubernetes dağıtımıdır. Şunları içerir:

  • Yerleşik CI/CD ardışık düzeni (Tekton ve Jenkins entegrasyonu)
  • Geliştirilmiş rol tabanlı erişim denetimi (RBAC)
  • Geliştirici dostu web konsolu
  • Yerleşik görüntü kayıt defteri ve derleme araçları
  • Varsayılan olarak daha katı güvenlik ilkeleri (kök konteyner yok)

OpenShift, uyum ve güvenliğin çok önemli olduğu finans ve sağlık gibi düzenlenmiş endüstrilerde popülerdir.

Podman ve containerd

Podman, Docker komutlarıyla tamamen uyumlu ancak kök seviyesi arka plan hizmeti gerektirmeyen daemon-less bir konteyner motorudur. Güvenlik bilincine sahip ortamlarda giderek daha popüler hale geliyor.

containerd, Docker’ın kendisinin arka planda kullandığı düşük seviyeli konteyner çalışma zamanıdır. Ayrıca Kubernetes için varsayılan çalışma zamanıdır ve Cloud Native Computing Foundation (CNCF) tarafından yönetilir.

Konteynerizasyonun Temel Avantajları

Daha Hızlı Dağıtım ve Ölçekleme

Konteynerler milisaniye ile saniye içinde başlarken, sanal makine önyüklemesi dakika gerektirir. Bu hız, konteynerları ideal kılar:

  • Yatay otomatik ölçekleme — Trafik artışını işlemek için saniyeler içinde uygulamanızın on yeni örneğini başlatın.
  • CI/CD ardışık düzenleri — Kod değişikliklerini saatler yerine dakikalar içinde oluşturun, test edin ve dağıtın.
  • Mavi-yeşil dağıtımlar — Uygulamanızın iki sürümünü aynı anda çalıştırın ve trafiği anında değiştirin.

Tutarlı, Yeniden Üretilebilir Ortamlar

Yapılandırma kayması — geliştirme, hazırlama ve üretim ortamları arasında kademeli farklılaşma — en yaygın üretim hatalarının kaynaklarından biridir. Konteynerler bu sorunu tamamen ortadan kaldırır. Konteyner görüntüsü değişmez ve uygulamanın ihtiyaç duyduğu her şeyi içerdiğinden, ortam ardışık düzenin her aşamasında aynıdır.

Üstün Kaynak Verimliliği

Konteynerler ana bilgisayar OS çekirdeğini paylaşır ve minimal yüke sahiptir. Aynı donanımda, tipik olarak eşdeğer VM tabanlı iş yükleriyle karşılaştırıldığında 5–10 kat daha fazla konteynerli iş yükü çalıştırabilirsiniz. Bu doğrudan daha düşük altyapı maliyetlerine ve sunucu kaynaklarının daha iyi kullanımına dönüşür.

Geliştirilmiş Geliştirici Üretkenliği

Konteynerler şunları önemsiz hale getirir:

  • Yeni geliştiricileri onboard etme (bir komut tüm yığını kurar)
  • Birden fazla bağımlılık sürümüne karşı aynı anda test etme
  • Mikro hizmetleri izole etme; böylece takımlar birbirinin üzerine basmadan bağımsız olarak çalışabilir

İzolasyon Yoluyla Geliştirilmiş Güvenlik

Her konteyner kendi yalıtılmış ad alanında çalışır. Bir konteyner içindeki tehlikeye atılmış bir uygulama, başka bir konteyner dosya sistemine, işlemlerine veya ağına doğrudan erişemez. Uygun görüntü taraması, minimal temel görüntüler ve salt okunur dosya sistemleriyle birleştirildiğinde, konteynerler saldırı yüzeyinizi önemli ölçüde azaltabilir.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın