CodeBlanks Logo Icon CodeBlanks

Layer ve cache

Image layer'larını ve build cache'ini öğrenirsin.

Katman ve önbellek

Her talimat bir katman üretir ve Docker katmanları önbelleğe alır. Bir talimat ve girdileri (kopyalanan dosyalar) değişmediyse katman önbellekten gelir (CACHED). Bir katman değişince ondan sonraki tüm katmanlar yeniden oluşturulur:

 => CACHED [2/5] WORKDIR /app
 => CACHED [3/5] COPY requirements.txt .
 => CACHED [4/5] RUN pip install -r requirements.txt
 => [5/5] COPY . .                        # yalnızca kod değişti

Önbelleği kapatmak

Bazen önbellek istenmez: RUN apt-get update gibi dış kaynağa bağlı adımlar önbellekten gelince eski paketler kalabilir. --no-cache tüm katmanları yeniden oluşturur; --pull temel image'ın daha yenisini indirir:

docker build --no-cache -t api:1.0 .
docker build --pull -t api:1.0 .
docker history api:1.0     # katmanları ve boyutlarını gösterir

Uygulama Temiz build ve katmanlar

İki komut yaz: önbelleği kullanmadan ve temel image'ın en yenisini çekerek api:1.1 build et; ardından bu image'ın katman geçmişini göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
docker build --no-cache --pull -t api:1.1 .
docker history api:1.1

Beklenen çıktı

[+] Building 6.3s (10/10) FINISHED
 => naming to docker.io/library/api:1.1 done
IMAGE          CREATED          CREATED BY                         SIZE
4f1e2d3c4b5a   3 seconds ago    CMD ["python" "app.py"]            0B
<missing>      3 seconds ago    RUN pip install --no-cache-dir …   41.2MB

Soru ve cevaplar

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

1 COPY . . talimatı pip install'dan önce yazılırsa ne olur?

  • Her kod değişikliğinde paketler yeniden kurulur Doğru cevap
  • Build başarısız olur
  • Image küçülür
  • Önbellek daha iyi çalışır

Açıklama: Değişen katmandan sonraki her şey yeniden çalışır.

2 Önbelleği kullanmadan build et.

Soru
docker build ____ -t api:1.0 .
Cevap
docker build --no-cache -t api:1.0 .

Açıklama: --no-cache her katmanı yeniden oluşturur.

3 Eşleştir.

Kavram Anlamı
CACHED Önbellekten geldi
--no-cache Tüm katmanları yeniden üret
--pull Temel image'ı güncelle
docker history Katman listesi

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