0Pricing
Docker & DevOps Fundamentals · Ders

Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme

En küçük taban imajlarını seçerek, derleme araçlarını kaldırarak ve daha hızlı indirme ile daha küçük saldırı yüzeyi için distroless veya scratch tabanlarını kullanarak son imajları küçültün.

Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme, CoddyKit'te ücretsiz bir Docker & DevOps Fundamentals dersidir. Bu, 4 dersinin 4. 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 boyutu neden önemlidir?

Daha küçük imajlar daha hızlı çekilir, daha çabuk başlar, depolama maliyeti daha düşüktür ve saldırganların kullanabileceği daha az paket içerir. Boyutu iyileştirmek hem performans hem de güvenlik açısından kazanç sağlar.

Yalın bir temel seçme

Varsayılan imajlar kullanışlıdır ancak ağırdır. node:20 imajını (yaklaşık 1 GB) node:20-slim veya node:20-alpine ile değiştirmek, yüzlerce megabaytı anında azaltabilir.

FROM node:20-slim

Alpine ödünleri

Alpine küçüktür ancak glibc yerine musl libc kullanır; bu da zaman zaman yerel ikili dosyaların bozulmasına neden olur. Dikkatle sınayın; bazen küçük ve daha güvenli seçenek -slim olur.

FROM python:3.12-alpine

RUN katmanlarını birleştirme

Her RUN bir katman ekler. İlişkili komutları zincirleyin ve temizlik işlemini aynı katmanda yapın; aksi hâlde silinen dosyalar önceki katmanı hâlâ büyütür.

RUN apt-get update \
 && apt-get install -y curl \
 && rm -rf /var/lib/apt/lists/*

.dockerignore kullanın

Bir .dockerignore dosyası gereksiz içerikleri derleme bağlamının dışında tutar: node_modules, .git ve günlükler. Daha küçük bağlam, daha hızlı derlemeler ve daha küçük katmanlar demektir.

# .dockerignore
.git
node_modules
*.log

Çok aşamalı derleme özeti

Tüm derleyicilerle bir aşamada derleme yapın, ardından yalnızca derleme çıktısını COPY --from ile temiz bir son aşamaya aktarın. Araç zinciri imajla birlikte gönderilmez.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.20
COPY --from=build /src/app /app

Distroless ile tanışın

Distroless imajlar yalnızca uygulamanızı ve çalışma zamanını içerir; kabuk, paket yöneticisi veya fazladan ikili dosya içermez. Küçüktür ve istismar edilmesi zordur.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Kabuk yoksa sorun da yok

Distroless'te kabuk bulunmadığından RUN komutları ve docker exec sh çalışmaz. Tüm hazırlıkları önceki aşamalarda yapın; içine bakmanız gerektiğinde :debug etiketini kullanın.

scratch temel imajı

Tamamen statik ikili dosyalar (Go, Rust) için FROM scratch, çalıştırılabilir dosyanızdan başka hiçbir şey göndermez; toplam boyut çoğu zaman birkaç megabayttır.

FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Kazanımlarınızı ölçme

Boyutları karşılaştırmak için docker images, hangi katmanların en büyük olduğunu görmek için docker history kullanın. Önce en şişkin katmanları iyileştirin.

docker history myapp:latest

Sürümleri sabitleyin, en yeniyi kullanmayın

Belirli bir etiketi veya özeti sabitlemek, derlemelerin yeniden üretilebilir olmasını sağlar ve üst akıştaki latest değiştiğinde boyutun beklenmedik biçimde artmasını önler.

FROM node:20.11.1-slim

Kısa kontrol

Distroless imajının özelliği nedir?

Özet

Artık imajları etkili biçimde küçültebilirsiniz:

  • -slim, -alpine, distroless veya scratch temel imajlarını seçin
  • RUN katmanlarını zincirleyip temizleyin; .dockerignore kullanın
  • Çok aşamalı derlemeler araç zincirini dışarıda bırakır
  • docker history ile ölçün ve sürümleri sabitleyin

Daha küçük imajlar, daha hızlı ve güvenli dağıtımlar demektir.

Sıkça Sorulan Sorular

“Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme” dersi ücretsiz mi?

Evet — “Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme” 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.

“Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme” dersinde ne öğreneceğim?

En küçük taban imajlarını seçerek, derleme araçlarını kaldırarak ve daha hızlı indirme ile daha küçük saldırı yüzeyi için distroless veya scratch tabanlarını kullanarak son imajları küçültü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 4. dersidir.

“Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme” 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. Verimlilik için Çok Aşamalı Derlemeler
  2. Derleme Önbelleğinden Yararlanma
  3. Dockerfile Güvenliği için En İyi Uygulamalar
  4. Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme
← Docker & DevOps Fundamentals Sayfasına Dön