İçeriğe geç

Rehber

Container ve image arasındaki fark: yeni başlayanlar için net bir açıklama

Docker öğrenirken en çok karıştırılan iki kavram: image ve container. Aralarındaki ilişkiyi anlamak, Docker'ın geri kalanını anlamayı kolaylaştırır.

2 dk okumaBaşlangıç seviyesi
Container ve image arasındaki fark: yeni başlayanlar için net bir açıklama — editoryal kapak görseli

Docker'a yeni başlayanların en sık karıştırdığı iki terim 'image' ve 'container'dır. Aralarındaki ilişki aslında basit bir benzetmeyle netleşir: image bir yazılımın kurulum paketiyse, container o paketin çalıştırılmış, canlı halidir.

Sınıf ve nesne benzetmesi

Yazılım geliştirenler için tanıdık bir benzetme: image, nesne yönelimli programlamadaki bir 'sınıf' gibidir — statik bir şablondur. Container ise o sınıftan üretilmiş bir 'nesne' (instance) gibidir — çalışan, durumu olan, bellekte yer kaplayan gerçek bir örnektir. Aynı image'dan aynı anda birden fazla container çalıştırılabilir, tıpkı aynı sınıftan birden fazla nesne üretilebildiği gibi.

Image ve container'ın temel farkları

ÖzellikImageContainer
Ne olduğuDeğişmez (immutable), salt okunur bir dosya sistemi paketiImage'dan türetilmiş, çalışan bir süreç
Durum (state)Durumsuz — her zaman aynı içeriğe sahiptirDurumlu olabilir — çalışırken içine yazılan veriler container'a özgüdür
Yaşam döngüsüdocker build ile oluşturulur, docker pull ile indirilirdocker run ile başlatılır, durdurulabilir, silinebilir
DepolamaDocker Hub veya özel bir registry'de saklanırYerel makinede/sunucuda çalışır durumdadır
Sayı ilişkisiBir imageAynı image'dan sınırsız sayıda container
Docker image ve container arasındaki temel farklar

Görsel örnek

Tek bir Docker image'dan birden fazla bağımsız container'ın türetilmesini gösteren diyagram
Tek bir image'dan birden fazla bağımsız container'ın nasıl türetildiğini gösteren diyagram.

Bir web sunucusu image'ı düşünün (örneğin nginx:latest). Bu image'dan üç ayrı container başlattığınızda, üçü de aynı temel dosya sistemiyle başlar ama her biri bağımsız çalışır — birinin içinde bir dosya değiştirmek diğerlerini etkilemez. Container durdurulup silindiğinde, o container'a özgü değişiklikler de (aksi belirtilmedikçe) kaybolur; image ise değişmeden kalır.

Pratik sonuç: neden önemli?

  • Bir container'ı silip yeniden başlatmak, 'temiz bir sayfaya dönmek' anlamına gelir — image bozulmaz
  • Aynı image'ı farklı ortamlarda (geliştirme, test, üretim) çalıştırmak, ortamlar arası tutarsızlığı büyük ölçüde azaltır
  • Kalıcı veri (veritabanı gibi) container içinde değil, bir volume'da tutulmalı — aksi halde container silindiğinde veri de gider

Sonraki adım

Image ve container ayrımı netleştikten sonra, birden fazla container'ı (uygulama + veritabanı + önbellek gibi) birlikte yönetmek için Docker Compose öğrenmek doğal bir sonraki adımdır.

Kategoriler

Etiketler

Kaynaklar

  1. Docker Docs — What is a container / What is an image

Paylaş