CodeBlanks Logo Icon CodeBlanks

Container ve sanal makine

Container ile sanal makine arasındaki farkları öğrenirsin.

Container ve sanal makine

Bir sanal makine (VM), hipervizör üzerinde kendi işletim sistemi çekirdeğiyle tam bir bilgisayar taklit eder; açılması dakikalar sürer, boyutu gigabaytlarla ölçülür. Container ise ana makinenin çekirdeğini paylaşır; yalnızca uygulama ve kütüphanelerini taşır. Bu yüzden saniyeler içinde başlar ve megabaytlarla ölçülür.

VM:        Uygulama | Kütüphaneler | Misafir işletim sistemi | Hipervizör | Donanım
Container: Uygulama | Kütüphaneler | Docker Engine | Ana işletim sistemi | Donanım

Yalıtım ne kadar güçlü?

Container yalıtımı Linux çekirdeğinin iki özelliğine dayanır: namespace'ler (süreç, ağ, dosya sistemi görünümünü ayırır) ve cgroup'lar (CPU ve bellek sınırı koyar). Çekirdek ortak olduğu için yalıtım VM'den zayıftır; güvenilmeyen kodu çalıştırmak için VM ya da gVisor gibi ek katmanlar tercih edilir.

docker run --memory 256m --cpus 0.5 nginx   # cgroup ile sınırlandırma

Uygulama Kaynak sınırlı container

nginx image'ını en fazla 512m bellek ve 1 CPU ile çalıştıran komutu yaz.

Başlangıç kodu

terminal
# buraya yaz

Beklenen çıktı

/docker-entrypoint.sh: Configuration complete; ready for start up

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Container'ların sanal makinelerden hızlı başlamasının nedeni nedir?

  • Ana makinenin çekirdeğini paylaşırlar; ayrı bir işletim sistemi açmazlar Doğru cevap
  • Daha az RAM kullanan dillerle yazılırlar
  • Yalnızca Linux'ta çalışırlar
  • İnternete bağlanmazlar

Açıklama: VM bir misafir işletim sistemini baştan açar; container yalnızca bir süreç başlatır.

2 Container'ın belleğini 256 MB ile sınırla.

Soru
docker run --____ 256m nginx
Cevap
docker run --memory 256m nginx

Açıklama: --memory bir cgroup sınırı koyar.

3 Özellikleri eşleştir.

Kavram Anlamı
sanal makine Kendi çekirdeği var
container Çekirdeği paylaşır
namespace Görünümü yalıtır
cgroup Kaynak sınırı koyar

Başlangıç bölümündeki tüm dersler