Senior
Konteynerleştirme nasıl çalışır, namespace hakkında daha fazla bilgi verebilir misin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Konteynerleştirme, uygulamaları ve ortamlarını izole etmeyi sağlar, böylece farklı ortamlarda aynı şekilde çalışırlar. Linux'ta izolasyonun temelini, süreçler için ayrı ad alanları oluşturan çekirdek mekanizmaları olan namespace'ler oluşturur.
Namespace'ler sistem kaynaklarını paylaşır:
- PID namespace — süreç kimliklerini izole eder, böylece konteyner içindeki süreçler yalnızca kendi PID'lerini görür.
- Mount namespace — dosya sistemi için ayrı bir bağlama noktası.
- Network namespace — kendi ağ yığını (arayüzler, IP adresleri).
- UTS namespace — ana bilgisayar adının ve alan adının izolasyonu.
- IPC namespace — süreçler arası iletişimin izolasyonu.
- User namespace — konteyner içindeki UID ve GID'yi, ana bilgisayardan farklı şekilde eşlemeye olanak tanır, güvenliği artırır.
Örneğin, bir konteyner başlatıldığında, bu namespace'lerin bir kümesi oluşturulur ve içindeki süreçler yalnızca kendi kaynaklarını görür, bu da izolasyon ve güvenliği sağlar. Go'da, namespace'lerle sistem çağları kullanılarak çalışılabilir, örneğin, yeni namespace'ler oluşturmak için syscall paketi kullanılabilir.