Örnek sorular
Containers OrchestrationZorluk 1
Bir container ile bir virtual machine (VM) arasındaki temel fark nedir?
- aContainer'lar host'un kernel'ini paylaşır, VM'ler kendi ayrı OS kernel'ini çalıştırır✓
- bContainer'lar diskte VM'lerden daha fazla yer kaplar çünkü tam bir OS içerir
- cVM'ler container'lardan daha hızlı başlar çünkü hypervisor süreci optimize eder
- dContainer teknolojisi yalnızca tek bir işletim sistemi ailesinde çalışabilir
Açıklama:Container'lar host kernel'ini paylaşan izole process'lerdir; bu yüzden VM'lere göre çok daha hafif ve hızlı başlarlar. VM'ler her biri kendi kernel'ini boot ettiği için daha ağırdır ve daha yavaş başlar (c bu yüzden yanlış); b de container'ların hafifliğiyle çelişir.
Containers OrchestrationZorluk 1
Bir container image, bir layer ve çalışan bir container arasındaki ilişki nasıl özetlenebilir?
- aLayer, çalışan bir container'ın canlı bellek anlık görüntüsüdür
- bImage, birden fazla container'ın diskte aynı anda paylaştığı, üzerine doğrudan yazma yapılabilen tek bir ortak katmandır
- cImage, salt-okunur layer'ların üst üste dizilmesinden oluşur; container ise image'den başlatılan çalışan bir örnektir✓
- dContainer, image'i diskte kalıcı olarak değiştiren, sonucu registry'ye otomatik push eden bir build adımıdır
Açıklama:Image, birbirinin üzerine binen salt-okunur layer'lardan oluşur; bir container, bu image'in üzerine ince bir yazılabilir katman eklenerek başlatılan çalışan örnektir. a yanlış çünkü layer bellek anlık görüntüsü değil dosya sistemi katmanıdır; d yanlış çünkü container image'i kalıcı değiştirmez, kendi yazılabilir katmanında çalışır.
Containers OrchestrationZorluk 1
Bir container registry'nin (örn. Docker Hub, private bir registry) temel işlevi nedir?
- aÇalışan container'ların canlı loglarını merkezi olarak toplamak
- bContainer image'lerini tag'lerle sürümleyip saklamak ve push/pull ile dağıtmak✓
- cContainer'lara ayrılacak CPU ve bellek limitlerini otomatik hesaplamak
- dHost makinedeki tüm process'leri izleyip container'lara dönüştürmek
Açıklama:Registry, image'leri tag'lerle versiyonlayıp saklayan ve push/pull ile dağıtımını sağlayan bir depodur. a yanlış çünkü log toplama registry'nin işi değil, observability araçlarının işidir; c ve d registry'nin sorumluluk alanı dışındadır.
Containers OrchestrationZorluk 1
docker run -d --name web nginx:1.25
Bu komuttaki
-d flag'i ne yapar?
- aContainer'ı sadece debug modunda, ekstra loglarla başlatır
- bContainer image'ini önce disk üzerinde deduplicate eder
- cContainer'ı host ile aynı network namespace'inde başlatır
- dContainer'ı arka planda (detached) çalıştırır, terminali bloklamaz✓
Açıklama:-d (detached) container'ı arka planda başlatır, terminal komut satırına geri döner; container'ın çıktısını görmek için ayrıca docker logs gerekir. a, b, c gerçek bir Docker flag davranışı değildir, junior adayların uydurabileceği makul ama yanlış yorumlardır.
Containers OrchestrationZorluk 1
Tek bir sunucuda birkaç container elle yönetilebiliyorken, birden fazla node'da çalışan onlarca servis için neden orchestration (Kubernetes gibi) araçlarına ihtiyaç duyulur?
- aOrchestration araçları olmadan container image'leri build edilemez
- bServis ve node sayısı arttıkça scheduling, self-healing ve scaling'i elle takip etmek pratik olmaktan çıkar✓
- cOrchestration, container'ların birbirinden izole çalışmasını ilk kez mümkün kılan katmandır; bu izolasyon olmadan container runtime tek başına hiç çalışamaz
- dOrchestration araçları yalnızca maliyet raporlama, faturalama ve kapasite planlama raporları üretmek için gereklidir
Açıklama:Node ve servis sayısı arttıkça hangi container'ın nerede çalışacağı, çökmüş container'ın restart edilmesi ve yük altında scale edilmesi gibi işleri elle takip etmek sürdürülemez hale gelir; orchestration bunu otomatikleştirir. a yanlış çünkü build ayrı bir adımdır; c yanlış çünkü izolasyonu container runtime zaten sağlar, orchestration değil.
Containers OrchestrationZorluk 1
Bir Docker container'ının tipik yaşam döngüsünde created, running, stopped/exited durumları için hangi ifade doğrudur?
- a
stopped durumundaki bir container image'i host diskinden otomatik olarak siler - b
created durumu, container'ın process'inin arka planda zaten çalışmaya başladığı ve kaynak tükettiği anlamına gelir - cBir container
stopped (exited) olsa bile silinmediği sürece dosya sistemi ve metadata'sı diskte kalır✓ - d
running durumundaki bir container asla durdurulamaz, sadece kaldırılabilir
Açıklama:docker create ile oluşturulup henüz başlatılmamış (created), çalışan (running) ve durdurulmuş (exited) durumlar ayrıdır; durdurulmuş bir container docker rm ile silinmediği sürece dosya sistemi/metadata diskte kalır ve docker start ile tekrar başlatılabilir. a ve d gerçek davranışla çelişir; b created durumunu yanlış tanımlar.