Docker'daki konteyner izolasyonu neye dayanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Docker'da konteyner izolasyonu, Linux çekirdeğinin aşağıdaki temel teknolojileri ve mekanizmalarına dayanır:
-
Namespaces (İsim Alanları): Sistem kaynaklarının görünürlüğünü ve erişimini izole etmeye olanak tanır. Docker çeşitli Namespace türleri kullanır:
PID namespace: İşlemleri izole eder, her konteyner yalnızca kendi işlemlerini görür (konteyner içindeki PID 1).Net namespace: Ağ yığını (ağ arayüzleri, IP adresleri, portlar, yönlendirme kuralları) izole eder.Mnt namespace: Dosya sistemi bağlama noktalarını izole eder.UTS namespace: hostname ve alan adını izole eder.IPC namespace: İşlem içi iletişim kaynaklarını (semaforlar, paylaşılan bellek) izole eder.User namespace: Kullanıcı ve grup kimliklerini izole eder.
-
Control Groups (cgroups): Sistem kaynaklarının (CPU, bellek, I/O, ağ trafiği) kullanımını sınırlandırmaya ve kontrol etmeye olanak tanır. Docker cgroups kullanır:
- CPU sayısını veya CPU zaman dilimini sınırlandırmak.
- Mevcut belleği sınırlandırmak.
- Giriş/çıkış disk önceliği veya sınırlandırması.
- Ağ trafiğini sınırlandırmak.
-
Union File Systems (UnionFS): Dosya sistemi katmanları oluşturur. Docker, OverlayFS, AUFS (daha eski), Btrfs gibi UnionFS kullanır. Bunlar şunlara olanak tanır:
- Docker görüntüleri için hafif katmanlar oluşturmak.
- Temel katmanların ortak kullanımıyla disk alanını verimli kullanmak.
- Konteynerdeki değişiklikleri kaydederken, temel görüntüyü değiştirmeden COW (Copy-on-Write) katmanları oluşturmak.
-
Seccomp (Güvenli Hesaplama Modu): Bir konteyner içindeki işlemin yapabileceği sistem çağrılarını (syscalls) sınırlar, böylece saldırı yüzeyini azaltır. Docker, çoğu konteyner için varsayılan seccomp profilleri kullanır.
-
AppArmor / SELinux: Ek güvenlik ve izolasyon için, AppArmor veya SELinux gibi zorunlu erişim kontrolü (MAC) modülleri kullanılabilir. Bu, süreçlerin yapabileceği işlemler üzerinde daha ayrıntılı kontrol sağlar (örneğin, dosyalara erişim, ağ kaynakları). Docker, ana sistemde yapılandırılmışsa, AppArmor veya SELinux profillerini kullanabilir.