Konteyner nedir?
Konteyner, bir uygulamayı ve çalışması için gereken bağımlılıkları yalıtılmış bir paket içinde çalıştıran hafif sanallaştırma yöntemidir. Sanal makinenin aksine ayrı bir işletim sistemi çekirdeği içermez; ana sistemin çekirdeğini paylaşır, bu yüzden hızlı açılır ve az kaynak tüketir.
Konteynerler uygulamayı her ortamda aynı şekilde çalıştırmayı kolaylaştırır. Ancak çekirdeğin paylaşılması, yalıtımın sanal makine kadar güçlü olmadığı anlamına gelir; güvenlik ayarları bu nedenle önem taşır.
Nasıl çalışır?
Konteyner yalıtımı Linux çekirdeğinin iki özelliğine dayanır: isim alanları (namespaces) süreçlerin, ağın ve dosya sisteminin görünümünü ayırır; kontrol grupları (cgroups) ise CPU ve bellek gibi kaynakları sınırlar.
- Konteynerler bir imajdan (image) başlatılır; imaj değiştirilemez bir şablon gibidir.
- Her konteyner kendi dosya sistemi, ağı ve süreç ağacıyla çalışır.
- LXC, Docker ve Podman yaygın konteyner araçlarıdır.
Sunucu ve hosting ortamında
VPS ve bulut ortamlarında konteynerler uygulamaları paketlemek, sürümlemek ve ölçeklendirmek için kullanılır. Bazı hosting ürünleri kullanıcıları konteyner tabanlı yalıtımla ayırır. Çekirdek paylaşıldığı için, ana makinenin çekirdeğindeki bir açık tüm konteynerleri etkileyebilir.
Konteyner imajları güvenilir olmayan kaynaklardan gelebilir. Eski ya da açıklı bileşenler içeren bir imaj, uygulamayı ilk günden savunmasız bırakır.