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
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
initsüreci başlar, servisler (systemd, cron, ssh) ayağa kalkar. - Yönetim: İçine SSH ile bağlanırsınız,
apt updateyaparsı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.
systemdveyasshgibi 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
| Özellik | LXC (Linux Containers) | Docker |
| Odak Noktası | İşletim Sistemi (System Container) | Uygulama (Application Container) |
| İçerik | Tam OS (Init, Syslog, Cron, SSH) | Sadece Uygulama ve Bağımlılıkları |
| Yönetim | SSH 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 Yeri | Proxmox, VPS Alternatifi, Uzun ömürlü sunucular | Mikroservisler, CI/CD, Dağıtık Sistemler |
| Performans | Native'e çok yakın | Native'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.