CodeBlanks Logo Icon CodeBlanks

FROM komutu

FROM ile temel image belirtmeyi öğrenirsin.

FROM komutu

FROM, image'ın üzerine kurulacağı temel image'ı seçer. Seçim image boyutunu ve güvenliğini doğrudan etkiler:

  • python:3.12: Debian tabanlı, tam (~1 GB)
  • python:3.12-slim: gereksiz paketleri çıkarılmış (~150 MB)
  • python:3.12-alpine: Alpine Linux tabanlı (~50 MB); musl libc yüzünden bazı paketlerde sorun çıkarabilir
FROM python:3.12-slim

Sürümü sabitlemek

FROM node yazmak, her build'de farklı bir Node sürümü getirebilir. Sürümü sabitle; daha da kesin olmak için image özetini (digest) kullanabilirsin:

FROM node:20-alpine
FROM node:20.18.0-alpine3.20
FROM node@sha256:3f2a…     # değişmez: tam olarak aynı image

FROM scratch ise tamamen boş bir image'dır; statik derlenmiş Go programları için kullanılır.

Uygulama Temel image seçimi

Bir Node.js uygulaması için Dockerfile'ın ilk iki satırını yaz: temel image node:20-alpine, çalışma dizini /app.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
FROM node:20-alpine
WORKDIR /app

Beklenen çıktı

[+] Building 4.2s (8/8) FINISHED
 => naming to docker.io/library/api:latest done

Soru ve cevaplar

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

1 Küçük image ile genellikle hangi fayda sağlanır?

  • Daha hızlı CPU
  • Daha çok bellek
  • Otomatik yedekleme
  • Daha hızlı indirme ve daha az güvenlik açığı yüzeyi Doğru cevap

Açıklama: Image'da bulunmayan paketin açığı da yoktur.

2 Hafif bir Python temeli seç.

Soru
FROM python:3.12-____
Cevap
FROM python:3.12-slim

Açıklama: -slim etiketi gereksiz paketleri çıkarılmış Debian sürümüdür.

3 Temel image'ları eşleştir.

Kavram Anlamı
python:3.12 Tam Debian, ~1 GB
python:3.12-slim İnceltilmiş, ~150 MB
python:3.12-alpine Alpine, ~50 MB
scratch Boş image

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