Konteynerlerin içi: namespace, cgroups ve chroot
Hazır bir konteyner motoru kullanmadan, çekirdeğin yalıtım yapı taşlarıyla kendi konteynerini adım adım kurar; her katmanın neyi koruyup neyi korumadığını görürsün.
Seviye 401 · 15 ders · 12 pratik lab
Dersler
Yapı taşları
- chroot: ilk yalıtım ve sınırları
- Ad alanları: pid, mount, uts, ipc, net ve user
- unshare ve nsenter ile denemek
- Kullanıcı ad alanı: içeride root, dışarıda sıradan kullanıcı
- Kısa görev: çalışan bir konteynerin ad alanlarını dışarıdan incele
Kendi konteynerin
- Kök dosya sistemi ve pivot_root
- overlayfs ile katmanlar
- Konteynere cgroup sınırı vermek
- Yetenekleri düşürmek ve seccomp
- Kısa görev: elle bir konteyner kur ve içinde kabuk aç
Araçlar
- systemd-nspawn ile hafif konteyner
- OCI çalışma zamanı: runc ve config.json
- Yalıtım neden kırılır: geçmiş olaylardan dersler
- Kısa görev: eski bir servisi nspawn içinde yalıt
Kapanış
- Bitirme görevi: yarım sayfalık betikle kendi küçük konteyner çalıştırıcını yaz ve sınırlarını raporla
Pratik lablar
- Bir sürecin ad alanlarını listele: Kapsayıcı sürecinin hangi ad alanlarının konaktan farklı olduğunu bul ve farklı olanların sayısını gir.
- unshare ile yalıtılmış süreç ve bağlama alanı oluştur: Yeni PID ve bağlama ad alanında kabuk başlat; içeride yalnızca kendi süreçlerinin göründüğünü ve bağlamaların konağa sızmadığını göster.
- Araçsız kapsayıcıyı nsenter ile konaktan incele: İçinde hiçbir araç bulunmayan kapsayıcının ağ ve bağlama alanına konaktan girerek dinlenen portu ve yanlış bağlanmış dizini bul.
- overlayfs ile katmanlı dosya sistemi kur: Salt okunur alt katman ve yazılabilir üst katmanla bağlama yap; değişikliklerin yalnızca üst katmanda kaldığını göster.
- Kendi kök dosya sistemine geçen süreç başlat: Küçük bir kök dosya sistemi hazırla ve yeni ad alanlarında bu köke geçerek konak dosyalarının görünmediğini doğrula.
- Elle sınırlı ve ağlı bir kapsayıcı kur: Ad alanları, cgroup bellek sınırı, overlay kökü ve veth çiftiyle elle bir kapsayıcı oluştur; içinden lab ağına erişimi ve sınırı kanıtla.
- Kullanıcı ad alanındaki kimlik eşlemesini oku: Ayrıcalıksız bir kapsayıcı sürecinin kimlik eşleme dosyalarını oku ve içerideki kökün konaktaki kimliğini yaz.
- Kapsayıcının yeteneklerini gerekene indir: Kapsayıcı sürecinin yetenek kümesini çözümle, gereksizleri düşürerek yeniden başlat ve uygulamanın çalıştığını göster.
- Kapsayıcı için seccomp profili çıkar ve uygula: Uygulamanın kullandığı sistem çağrılarını izleyerek izin listesi çıkar, profili uygula ve engellenen çağrıyı denetim kaydında göster.
- runc ile en küçük kapsayıcıyı çalıştır: Kök dosya sistemi ve üretilen yapılandırma dosyasıyla runc üzerinden bir kapsayıcı başlat ve durumunu listele.
- Çalışan kapsayıcının çekirdek düzeyindeki izlerini topla: Bir kapsayıcının cgroup yolunu, ad alanı kimliklerini, overlay katman dizinlerini ve veth eşini konaktan bul.
- Kapsayıcı yalıtımını katman katman denetle: Verilen üç kapsayıcının ad alanı paylaşımı, yetenek, seccomp ve bağlama ayarlarını denetle; yalıtımı zayıf olanı gerekçeleriyle raporla.
Kurs hakkında
Hazır bir konteyner motoru kullanmadan, çekirdeğin yalıtım yapı taşlarıyla kendi konteynerini adım adım kurar; her katmanın neyi koruyup neyi korumadığını görürsün.
Ne öğreneceksin
- Yapı taşları
- Kendi konteynerin
- Araçlar
- Kapanış
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.