Docker’ın içi: namespace, cgroup, OCI ve runc
Docker olmadan, çekirdek özellikleriyle elle konteyner kurar; containerd, runc ve OCI belgelerinin her katmanda ne yaptığını görürsün.
Seviye 501 · 12 ders · 12 pratik lab
Dersler
Çekirdek yapı taşları
- Namespace’ler: unshare ve nsenter
- cgroup v2 ile kaynak sınırlamak
- chroot, pivot_root ve kök dosya sistemi
- Yetenekler ve seccomp’un konteynerdeki yeri
- Kısa görev: yalnızca çekirdek araçlarıyla bir konteyner kur
Çalışma zamanı katmanları
- dockerd, containerd ve shim zinciri
- OCI paketi ve runc ile konteyner çalıştırmak
- OCI imaj belgesi: manifest, katmanlar, özetler
- Kök yetkisiz konteynerler ve kullanıcı eşleme
- Kısa görev: bir imajı elle aç ve runc ile çalıştır
Kapanış
- Konteyner yalıtımı nerede zayıflar: savunmacı gözüyle
- Bitirme görevi: küçük bir konteyner çalıştırıcısı yaz ve Docker ile karşılaştır
Pratik lablar
- Araçsız konteynerin ağına gir: İçinde hiçbir ağ aracı olmayan konteynerin ağ alanına ana makineden nsenter ile gir ve dinlenen portlar ile yönlendirme tablosunu raporla.
- Elle kurulan cgroup sınırı: Docker kullanmadan bir cgroup v2 grubu oluştur, bellek ve süreç sayısı sınırı koy, bir süreci içine al ve sınırların aşıldığında devreye girdiğini sayaçlarla göster.
- Konteynerin alanına sızan süreç: Lab makinesinde docker top’ta görünmeyen ama bir konteynerin alanlarını paylaşan süreci namespace kimliklerini ve cgroup kayıtlarını karşılaştırarak bul ve nasıl girdiğini açıkla.
- Tek yetenekle çalışan servis: Web servisini tüm yetenekleri düşürüp yalnızca düşük port dinleme yeteneğini ekleyerek çalıştır ve yetenek listesini ve servisin yanıt verdiğini göster.
- Sıkı profilde açılmayan uygulama: Özel seccomp profili altında izin hatasıyla açılmayan uygulamanın hangi sistem çağrısına takıldığını izleyerek bul, profile yalnızca o çağrıyı ekle ve uygulamanın çalıştığını göster.
- Yalıtımı zayıf üç konteyner: Kendi lab makinende ayrıcalıklı kip, ana makine süreç alanı ve Docker soketi bağlamasıyla çalışan üç konteynerin ana makineye ne kadar erişebildiğini değerlendir ve her biri için sıkılaştırılmış çalıştırma komutunu kanıtıyla yaz.
- Katman özetlerini elle doğrula: Dışa aktarılmış bir imajın manifestini ve yapılandırmasını oku, katmanları sırasıyla listele ve her katmanın sha256 özetinin manifesttekiyle eşleştiğini göster.
- Açılmayan runc paketi: Hatalı kök dosya sistemi yolu, terminal ayarı ve kullanıcı eşlemesi içeren OCI paketinin config.json dosyasını düzelt ve konteyneri runc ile çalıştır.
- Kimsenin sahiplenmediği dosyalar: Kök yetkisiz çalışan konteynerde bağlanan klasördeki dosyaların ‘nobody’ görünmesinin nedenini uid_map ve alt kimlik aralıklarından çöz, eşlemeyi düzelt ve içeride ve dışarıda sahipliğin doğru olduğunu göster.
- Küçük bir kök dosya sistemine chroot ile gir: Dışa aktarılmış bir imajdan kök dosya sistemi çıkar, chroot ile içine gir ve bu ortamın ana makinenin süreçlerini ve ağını neden hâlâ gördüğünü komut çıktılarıyla açıkla.
- Yalnızca çekirdek araçlarıyla konteyner kur: Docker kullanmadan unshare ve pivot_root ile kendi PID, bağlama ve ana makine adı alanı olan bir ortam kur, içeride 1 numaralı sürecin kendi kabuğun olduğunu ve eski kökün artık görünmediğini göster.
- Küçük çalıştırıcın Docker’dan nerede ayrılıyor?: Verilen küçük konteyner çalıştırıcı betiğine bellek sınırı ve yetenek düşürme ekle, aynı imajı Docker ile de çalıştır ve iki ortamın ad alanlarını, cgroup değerlerini ve yeteneklerini karşılaştıran bir fark tablosu çıkar.
Kurs hakkında
Docker olmadan, çekirdek özellikleriyle elle konteyner kurar; containerd, runc ve OCI belgelerinin her katmanda ne yaptığını görürsün.
Ne öğreneceksin
- Çekirdek yapı taşları
- Çalışma zamanı katmanları
- Kapanış
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 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.