LXC (Linux Containers) ve Docker Arasındaki Temel Farklar

müfettiş

Moderatör
Katılım
20 Ocak 2024
Mesajlar
325
Tepkime puanı
1
Puanları
18

LXC (Linux Containers) ve Docker Arasındaki Temel Farklar

42346941-13385907.png


Giriş: İki Farklı Konteyner Felsefesi

Sanallaştırma dünyasında "Konteyner" denince akla hemen Docker gelir. Ancak konteyner teknolojisi Docker'dan çok daha eskidir. Linux çekirdeğinin (Kernel) sunduğu izolasyon yeteneklerini (cgroups ve namespaces) kullanan ilk popüler teknoloji LXC (Linux Containers)'dir.
Bir sistem yöneticisi veya DevOps mühendisi için LXC ve Docker arasındaki farkı anlamak hayati önem taşır. Çünkü ikisi de "konteyner" olsa da, kullanım amaçları gece ile gündüz kadar farklıdır. Basitçe: LXC, hafif bir Sanal Makine (VM) gibidir; Docker ise paketlenmiş bir uygulamadır.

LXC (System Container): "Diyet" Sanal Makine

LXC, geleneksel bir sanal makinenin (VMware, VirtualBox) davranışını taklit eder, ancak donanım sanallaştırması yapmadığı için çok daha hafiftir.
  • Çalışma Mantığı: Bir LXC konteynerini başlattığınızda, içinde tam bir işletim sistemi (Ubuntu, Alpine, CentOS) açılır. Tıpkı bir VM gibi init süreci başlar, servisler (systemd, cron, ssh) ayağa kalkar.
  • Yönetim: İçine SSH ile bağlanırsınız, apt update yaparsınız, kullanıcılar eklersiniz ve birden fazla uygulama kurabilirsiniz.
  • Kalıcılık (Stateful): LXC, verileri kalıcı olarak saklamak üzere tasarlanmıştır. İçinde yaptığınız değişiklikler (bir dosya oluşturmak veya IP adresi değiştirmek), konteyneri kapatıp açsanız bile orada kalır.

Docker (Application Container): "Tek İş, Tek Süreç"

Docker ise olaya "sistem" odaklı değil, "uygulama" odaklı bakar.
  • Çalışma Mantığı: Docker konteyneri, genellikle tek bir süreci (Process) çalıştırmak için tasarlanmıştır. Örneğin bir MySQL konteyneri sadece MySQL servisini çalıştırır. systemd veya ssh gibi arka plan süreçleri (genellikle) yoktur.
  • Geçicilik (Stateless): Docker konteynerleri "ölümlü" (Ephemeral) olacak şekilde tasarlanmıştır. Bir güncelleme gerektiğinde, eski konteyneri siler ve yenisini oluşturursunuz. Veriler konteynerin içinde değil, dışarıdaki "Volume"larda tutulur.
  • Taşınabilirlik: Docker'ın asıl gücü, uygulamayı ve kütüphanelerini paketleyip (Image) her yerde aynı şekilde çalıştırabilmesidir.

Karşılaştırma Tablosu

ÖzellikLXC (Linux Containers)Docker
Odak Noktasıİşletim Sistemi (System Container)Uygulama (Application Container)
İçerikTam OS (Init, Syslog, Cron, SSH)Sadece Uygulama ve Bağımlılıkları
YönetimSSH ile bağlanıp yönetilir (VM gibi)API veya CLI ile yönetilir (Immutable)
Veri YapısıKalıcı (Stateful)Geçici (Stateless)
Kullanım YeriProxmox, VPS Alternatifi, Uzun ömürlü sunucularMikroservisler, CI/CD, Dağıtık Sistemler
PerformansNative'e çok yakınNative'e çok yakın (Katmanlı dosya sistemi yükü olabilir)

Hangisini Ne Zaman Kullanmalıyım?

  • LXC Kullanın: Eğer amacınız "Bana bir Ubuntu sunucusu ver, içine Apache, PHP ve MySQL kurup 3 yıl boyunca yöneteceğim" ise LXC (veya Proxmox CT) mükemmeldir. Tam sanal makine (VM) kadar kaynak tüketmez ama aynı hissi verir.
  • Docker Kullanın: Eğer amacınız "Bana Nginx'in 1.21 sürümünü ver, işi bitince sil, yenisini kur" veya "Uygulamamı paketleyip AWS'ye göndereceğim" ise Docker tek seçenektir.

Sonuç

LXC, klasik sistem yöneticilerinin (SysAdmin) modern aracıdır; Docker ise modern yazılım geliştiricilerin (DevOps) aracıdır. İkisi rakip değil, farklı sorunların çözümleridir. Proxmox üzerinde çalışan bir LXC konteynerinin içinde Docker çalıştırmak (Nest), her iki dünyanın avantajını birleştirmenin popüler bir yoludur.
 
Geri
Üst