# Docker Image vs Konteyner

Adres: https://softwaredictionary.org/tr/karsilastirma/docker-image-vs-container
Son güncelleme: 2026-10-06

Kısaca: Docker image, uygulamayı ve bağımlılıklarını taşıyan salt okunur bir şablondur; konteyner ise bu imajın kendi yazılabilir katmanı olan, çalışan bir örneğidir.

## Docker image ile konteyner arasındaki fark nedir?

Docker image (imaj), bir uygulamanın ihtiyaç duyduğu her şeyin paketlenmiş, salt okunur bir anlık görüntüsüdür: kodu, Node.js ya da Python gibi bir çalışma zamanı, sistem kütüphaneleri ve başlangıç komutu gibi varsayılan ayarlar. Konteyner ise bu imajı çalıştırdığınızda elde ettiğiniz şeydir: ana makinede kendi dosya görünümü, ağı ve kaynak sınırları olan yalıtılmış bir süreç ve imajın üstünde ince, yazılabilir bir katman. İmajları derler ve saklarsınız; konteynerleri başlatır, durdurur ve kaldırırsınız.

Aradaki ilişki bir sınıf ile nesneleri ya da bir tarif ile ondan pişirilen yemekler gibidir: tek bir imaj aynı anda istediğiniz sayıda konteyner başlatabilir ve her biri bağımsız çalışır. Bir konteyner bir dosyayı değiştirdiğinde değişiklik kendi yazılabilir katmanına gider; imaj ve diğer konteynerler etkilenmez. Bu yüzden bir imaj bir ad, `postgres:17` gibi bir etiket ve bir içerik özetiyle (digest) tanımlanır; her konteyner ise kendi kimliğini (ID) ve adını alır.

Yaşam döngüleri de farklıdır. İmaj, `docker build` ile bir `Dockerfile`'dan oluşturulur, bir registry'ye gönderilir ve herhangi bir makineye çekilir; hiç değişmez, yeni bir sürüm yeni bir imajdır. Konteyner `docker run` ile oluşturulur, ana süreci çalıştığı sürece yaşar ve durdurulabilir, yeniden başlatılabilir ya da kaldırılabilir. OCI biçiminde oluşturulan imajlar containerd, Podman ve Kubernetes üzerinde de çalışır; konteyner imajı (container image) diye de anılmalarının nedeni budur.

Sık yapılan bir yanlış, çalışan bir konteynerin içinde yapılan değişikliklerin imajı güncellediğini düşünmektir. Güncellemez: konteynerin katmanına yazılan her şey, bir volume'a gitmediyse ya da yeni bir imaja commit edilmediyse konteyner kaldırıldığında kaybolur; commit etmek de nadiren iyi bir uygulamadır. Bir diğer yanlış, bir konteyneri silmenin imajını da sildiğini sanmaktır; imaj, siz onu `docker rmi` ya da bir temizlik komutuyla kaldırana kadar durur.

| Özellik | Docker Image | Konteyner |
| --- | --- | --- |
| Nedir | Katmanlar hâlinde saklanan, salt okunur bir şablon | Bir imajın çalışan ya da durdurulmuş bir örneği |
| Durum | Değişmez: derlendikten sonra hiç değişmez | Çalışırken değişen yazılabilir bir katmanı vardır |
| Nasıl oluşturulur | Bir `Dockerfile`'dan `docker build` ile | Bir imajdan `docker run` ya da `docker create` ile |
| Nerede yaşar | Yerel imaj deposunda ya da Docker Hub gibi bir registry'de | Ana makinenin konteyner çalışma zamanında, yalıtılmış süreçler olarak |
| Kimliği | Ad, etiket ve SHA-256 özeti | Konteyner kimliği (ID) ve adı |
| Sayı | Bir kez derlenir, sonra kopyalanır ve yeniden kullanılır | Tek bir imajdan aynı anda birçoğu çalışabilir |
| Kullandığı | Yalnızca disk alanı | Çalışırken CPU, bellek ve ağ |
| Benzetme | Bir sınıf ya da bir tarif | Bir nesne ya da tariften pişirilen bir yemek |

## Docker Image şu durumlarda doğru seçim

- Bir uygulamayı bir kez paketleyip her ortama aynı şeyi göndermek istiyorsunuz.
- Bağımlılıkları, temel sistemi ya da başlangıç komutunu değiştiriyorsunuz: `Dockerfile`'ı düzenleyip yeniden derleyin.
- Dağıttığınız şeyi sürümlemeniz, taramanız ya da imzalamanız gerekiyor.
- Yazılımı Docker Hub gibi bir registry üzerinden paylaşmak istiyorsunuz.

## Konteyner şu durumlarda doğru seçim

- Uygulamayı gerçekten çalıştırmak, test etmek ya da hata ayıklamak istiyorsunuz.
- Aynı uygulamanın, her biri kendi port'ları ve ayarlarıyla birkaç yalıtılmış kopyasına ihtiyacınız var.
- Canlı bir süreci incelemeniz, loglarını okumanız ya da içinde bir shell açmanız gerekiyor.
- Ortam değişkenleri, volume'lar ya da kaynak sınırları gibi ayarlar her çalıştırmada değişiyor.

## Sık sorulan sorular

**Bir konteyner imaj olmadan çalışabilir mi?**

Hayır. Her konteyner, dosyalarını ve varsayılan ayarlarını sağlayan bir imajdan başlar; konteyner bunun üstüne yalnızca yazılabilir bir katman ve çalışma zamanı durumu ekler.

**Docker image ile konteyner imajı aynı şey mi?**

Pratikte evet. Docker imajları OCI biçiminde oluşturur; bu yüzden aynı imaj containerd, Podman ya da Kubernetes üzerinde çalışır ve "konteyner imajı" araçtan bağımsız addır.

**Bir konteynerin içinde yaptığım değişiklikleri nasıl korurum?**

Kalması gereken veriyi bir volume'a koyun; yazılımın kendisindeki değişiklikleri ise `Dockerfile`'a yazıp imajı yeniden derleyin. `docker commit` bir konteyneri imaja çevirebilir, ama sonucu yeniden üretmek zordur.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
