0Pricing
Docker & DevOps Fundamentals · Ders

İmaj Katmanları ve İyileştirme

Docker imajlarının nasıl katmanlandığını keşfedin ve imaj boyutunu ve oluşturma sürelerini iyileştirecek teknikleri uygulayın.

İmaj Katmanları ve İyileştirme, CoddyKit'te ücretsiz bir Docker & DevOps Fundamentals dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Docker & DevOps Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.

İmaj Katmanları: Yapı Taşları

Docker imajları tek ve devasa bir dosyadan oluşmaz. Bunun yerine bir dizi salt okunur katmandan oluşturulurlar. Bu katmanları üst üste dizilmiş saydam tabakalar gibi düşünebilirsiniz.

Her katman imajdaki bir değişikliği temsil eder; bu da imajları verimli ve esnek hâle getirir. Bu katmanlı yapı, Docker'ın çalışma biçiminin temelidir.

İmaj Katmanları ve İyileştirme — resim 1

Dockerfile Talimatları ve Katmanlar

Bir Dockerfile yazdığınızda, neredeyse her talimat öncekinin üzerine yeni bir katman oluşturur. FROM, RUN, COPY ve ADD gibi talimatların tümü yeni katmanlara katkıda bulunur.

Docker bu talimatları sırayla yürütür ve her yeni katmanı önceki katmanın durumuna göre oluşturur.

İmaj Geçmişini İnceleme

Bir imajı oluşturan katmanları docker history komutunu kullanarak görebilirsiniz. Bu komut her talimatı, boyutunu ve ne zaman oluşturulduğunu göstererek imajın nasıl büyüdüğünü anlamanıza yardımcı olur.

Bu, imaj boyutuyla ilgili sorunları ayıklamak için güçlü bir araçtır.

docker history my-image:latest

Katman Önbelleğinin Gücü

Docker akıllı bir derleme önbelleği kullanır. Dockerfile dosyanızdaki bir talimat ve bağlamı (ör. kopyalanan dosyalar) son derlemeden bu yana değişmediyse Docker mevcut katmanı yeniden kullanır.

Bu yeniden kullanım, Docker'ın değişmeyen adımları yeniden yürütmesi gerekmediğinden sonraki derlemeleri büyük ölçüde hızlandırır.

Optimizasyon 1: Akıllı Katman Sıralaması

Dockerfile dosyanızdaki talimatların sırası, etkili önbellekleme için çok önemlidir. Seyrek değişen talimatları (sistem bağımlılıklarını yüklemek gibi) en üste yerleştirin.

Sık değişen talimatlar (uygulama kodunuzu kopyalamak gibi) daha aşağıda yer almalıdır. Böylece yalnızca kodunuz değiştiğinde Docker kararlı bağımlılıklar için önbelleğe alınmış katmanları yeniden kullanabilir.

Örnek: Katman Sırasını Optimize Etme

Bu iki Dockerfile parçasını karşılaştırın. İyi sıralama, kararlı bağımlılıkları önce yerleştirerek Docker'ın bunları önbelleğe almasına ve yalnızca değişen uygulama kodu için katmanları yeniden oluşturmasına olanak tanır.

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]

Optimizasyon 2: RUN Komutlarını Birleştirme

Her RUN komutu genellikle yeni bir katman oluşturur. Birden fazla komutu tek bir RUN talimatında birleştirerek katman sayısını ve çoğu zaman son imaj boyutunu azaltabilirsiniz.

Komutları birbirine bağlamak ve bunları tek bir atomik katmanın parçası hâline getirmek için && \ işleçlerini kullanın.

Örnek: RUN Komutlarını Birbirine Bağlama

Birden fazla RUN komutu kullanmak yerine bunları && \ ile birbirine bağlayın. Bu, tüm bu işlemler için tek ve daha verimli bir katman oluşturur.

FROM ubuntu:latest
RUN apt-get update && \
    apt-get install -y curl && \
    rm -rf /var/lib/apt/lists/*
CMD ["bash"]

Optimizasyon 3: Dosyaları Temizleme

Derleme işlemi sırasında yalnızca geçici olarak gereken dosyaları her zaman temizleyin. Örneğin paket yöneticisi önbellekleri ( apt-get clean gibi) veya geçici derleme çıktıları, imaj katmanlarını önemli ölçüde büyütebilir.

Bunları oluşturan RUN komutunun içinde temizlemek, önceki bir katmanda kalıcı olmamalarını sağlar.

Hızlı Kontrol: İmaj Optimizasyonu

Aşağıdaki Dockerfile parçasını inceleyin:

FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]

Bu Dockerfile dosyasını daha küçük bir imaj boyutu ve olası daha hızlı yeniden derlemeler için en iyi şekilde optimize edecek değişiklik aşağıdakilerden hangisidir?

Özet: Daha Hafif, Daha Hızlı İmajlar

Docker imajlarının katmanlar hâlinde oluşturulduğunu ve her talimatın çoğu zaman yeni bir katman oluşturduğunu öğrendiniz. Bunu anlamak, optimizasyon için çok önemlidir!

  • Derleme önbelleği isabetlerini en üst düzeye çıkarmak için talimatları dikkatle sıralayın.
  • Katman sayısını azaltmak için birden fazla RUN komutunu tek komutta birleştirin.
  • Katmanları küçük tutmak için geçici dosyaları ilgili RUN komutlarının içinde temizleyin.

Bu teknikler, verimli dağıtımlar için gerekli olan daha küçük ve daha hızlı oluşturulan Docker imajları hazırlamanıza yardımcı olur.

Sıkça Sorulan Sorular

“İmaj Katmanları ve İyileştirme” dersi ücretsiz mi?

Evet — “İmaj Katmanları ve İyileştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Docker & DevOps Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.

“İmaj Katmanları ve İyileştirme” dersinde ne öğreneceğim?

Docker imajlarının nasıl katmanlandığını keşfedin ve imaj boyutunu ve oluşturma sürelerini iyileştirecek teknikleri uygulayın. Docker & DevOps Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Docker & DevOps Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Docker & DevOps Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“İmaj Katmanları ve İyileştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Docker & DevOps Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Docker & DevOps Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dockerfile’ları Anlama
  2. Özel Docker İmajları Oluşturma
  3. İmaj Katmanları ve İyileştirme
  4. Çok Aşamalı Derlemeler ve Daha Küçük İmajlar
← Docker & DevOps Fundamentals Sayfasına Dön