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 DevOps Bootcamp 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, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp 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-slimAlpine ö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-alpineRUN 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 /appDistroless 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:latestSü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-slimKısa kontrol
Distroless imajının özelliği nedir?
Özet
Artık imajları etkili biçimde küçültebilirsiniz:
-slim,-alpine, distroless veyascratchtemel imajlarını seçinRUNkatmanlarını zincirleyip temizleyin;.dockerignorekullanın- Çok aşamalı derlemeler araç zincirini dışarıda bırakır
docker historyile ö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 DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp 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. DevOps Bootcamp 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.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, 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 DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp 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
- Verimlilik için Çok Aşamalı Derlemeler
- Derleme Önbelleğinden Yararlanma
- Dockerfile Güvenliği için En İyi Uygulamalar
- Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme