Layer ve cache
- Docker & Kubernetes kursu
- Başlangıç
- Ders 28/82
- 4 dk
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österirUygulama 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
# buraya yazÖrnek çözüm
docker build --no-cache --pull -t api:1.1 .
docker history api:1.1Beklenen çı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.
docker build ____ -t api:1.0 .
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 |