Ana içeriğe geç

Docker Image

Türkçe karşılığı
docker imajı, konteyner imajı, kapsayıcı görüntüsü
Okunuşu
dokır imic

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/docker-image

Kısaca

Docker image, bir uygulamayı, bağımlılıklarını ve ayarlarını içeren, salt okunur ve katmanlı bir pakettir; konteynerler bu şablondan başlatılır.

Docker image nedir?

Docker image (imaj), bir uygulamanın çalışmak için ihtiyaç duyduğu her şeyi taşır: kodunu, Node.js ya da Python gibi bir çalışma zamanını, sistem kütüphanelerini, dosyaları ve varsayılan komut, ortam değişkenleri ve dinlediği port gibi meta verileri. İmajlar salt okunurdur; postgres:17 gibi bir ad ve etiketle (tag) ve içeriklerinin SHA-256 özeti olan bir digest ile tanımlanır. Docker imajları Open Container Initiative (OCI) biçiminde oluşturur; bu yüzden aynı imaj containerd, Podman ve Kubernetes üzerinde de çalışır ve konteyner imajı (container image) diye de anılır.

Bir imaj, docker build ile bir Dockerfile'dan derlenir. COPY ya da RUN gibi dosyaları değiştiren her talimat, yalnızca bu değişiklikleri kaydeden bir katman ekler. Katmanlar önbelleğe alınır ve paylaşılır: aynı temel imaj üzerine kurulu on imaj o temeli yalnızca bir kez saklar; kod değiştikten sonra yapılan bir derleme de değişen adımdan önceki her katmanı yeniden kullanır. İmajlar Docker Hub gibi registry'ler üzerinden paylaşılır; tek bir imaj adı amd64 ve arm64 gibi birkaç işlemci mimarisini kapsayabilir.

Aradaki ilişki, programlamadaki bir sınıf ile nesneleri ya da bir kurabiye kalıbı ile kurabiyeler gibidir: imaj şablondur, her konteyner de ondan üretilmiş bir örnektir. Bir konteyner başladığında Docker imajın üstüne ince, yazılabilir bir katman ekler. Konteynerin değiştirdiği dosyalar bu katmana gider, imajın kendisi hiç değişmez ve aynı imajdan aynı anda birçok konteyner çalışabilir.

En yaygın karışıklık imaj ile konteyner arasındadır. İmaj, derleyip sakladığınız ve kopyaladığınız durağan bir çıktıdır; konteyner ise onun kendi süreçleri, yazılabilir katmanı ve ağı olan, çalışan ya da durdurulmuş bir örneğidir. Bir konteyneri silmek imajını silmez; bir konteynerin içinde yapılan değişiklikler de bir volume'a kaydedilmedikçe konteyner kaldırıldığında kaybolur. Dockerfile ise üçüncü bir şeydir: imajı üreten tarif.

Önemli noktalar

  • Docker image, bir uygulamayı, bağımlılıklarını ve ayarlarını içeren salt okunur bir şablondur.
  • Bir Dockerfile'dan katman katman derlenir; katmanlar önbelleğe alınır ve paylaşılır.
  • Etiketler sürümleri adlandırır; digest ise tam içeriği tanımlar.
  • İmajlar OCI biçimine uyar, bu yüzden uyumlu her çalışma zamanında çalışır.
  • İmaj şablondur; konteyner onun çalışan bir örneğidir.

Örnek

Dockerfile'dan imaja, imajdan konteynerlerebash
# Build an image from the Dockerfile in this folder and tag it
docker build -t shop-api:1.0 .

# List local images and look at the layers of this one
docker image ls
docker history shop-api:1.0

# Start two independent containers from the same image
docker run -d --name api-1 -p 8081:3000 shop-api:1.0
docker run -d --name api-2 -p 8082:3000 shop-api:1.0

# Removing the containers leaves the image untouched
docker rm -f api-1 api-2
docker image ls shop-api

Sık sorulan sorular

Docker image ile konteyner arasındaki fark nedir?

İmaj salt okunur bir şablondur; konteyner ise ondan oluşturulan, kendi yazılabilir katmanı olan çalışan bir örnektir. Bir imajdan birçok konteyner başlatabilirsiniz; onları kaldırmak imajı yerinde bırakır.

Docker imajları nerede saklanır?

Yerelde, Docker'ın makinenizde yönettiği depolamada; uzakta ise Docker Hub, GitHub Container Registry ya da bir bulut sağlayıcısının registry'si gibi, her sunucunun onları çekebildiği konteyner registry'lerinde.

Bir Docker imajını nasıl küçültebilirim?

Alpine, slim ya da distroless sürümü gibi küçük bir temel imajla başlayın, derleyiciler ve derleme araçları son imaja girmesin diye çok aşamalı (multi-stage) bir derleme kullanın ve imajın ihtiyaç duymadığı dosyaları .dockerignore içinde listeleyin.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar