Riduzione delle immagini con basi Slim e Distroless
Riduca le immagini finali scegliendo immagini di base minimali, rimuovendo gli strumenti di build e usando basi distroless o scratch per pull più rapidi e una superficie d'attacco ridotta.
Riduzione delle immagini con basi Slim e Distroless è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
Perché le dimensioni dell'immagine sono importanti
Le immagini più piccole vengono scaricate più velocemente, si avviano più rapidamente, costano meno da archiviare ed espongono meno pacchetti agli attaccanti. Ottimizzare le dimensioni offre vantaggi sia in termini di prestazioni sia di sicurezza.
Scegliere una base leggera
Le immagini predefinite sono comode, ma pesanti. Sostituire node:20 (circa 1 GB) con node:20-slim o node:20-alpine può ridurre immediatamente le dimensioni di centinaia di megabyte.
FROM node:20-slimCompromessi di Alpine
Alpine è molto piccola, ma usa musl libc invece di glibc, causando talvolta problemi ai binari nativi. Eseguire test accurati; in alcuni casi -slim è l'opzione compatta più sicura.
FROM python:3.12-alpineCombinare i layer RUN
Ogni RUN aggiunge un layer. Concatenare i comandi correlati ed eseguire la pulizia nello stesso layer; in caso contrario, i file eliminati continuerebbero a ingrossare il layer precedente.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*Usare .dockerignore
Un file .dockerignore esclude dal contesto di build i file non necessari: node_modules, .git e i log. Un contesto più piccolo significa build più veloci e layer più piccoli.
# .dockerignore
.git
node_modules
*.logRiepilogo delle build multi-stage
Eseguire la build in uno stage con tutti i compilatori, poi usare COPY --from per copiare solo l'artefatto in uno stage finale pulito. La toolchain non viene mai inclusa nell'immagine.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM alpine:3.20
COPY --from=build /src/app /appAlla scoperta di Distroless
Le immagini Distroless contengono solo l'applicazione e il relativo runtime: niente shell, niente gestore di pacchetti e nessun binario aggiuntivo. Sono compatte e difficili da sfruttare.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Niente shell, nessun problema
Distroless non include una shell, quindi i comandi RUN e docker exec sh non funzioneranno. Eseguire tutta la configurazione negli stage precedenti; usare il tag :debug quando è necessario esaminare il contenuto dell'immagine.
La base scratch
Per i binari completamente statici (Go, Rust), FROM scratch include solo l'eseguibile, spesso per una dimensione totale di pochi megabyte.
FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Misurare i risultati
Usare docker images per confrontare le dimensioni e docker history per vedere quali layer sono più grandi. Ottimizzare prima i layer più pesanti.
docker history myapp:latestBloccare le versioni, non usare latest
Bloccare un tag o un digest specifico rende le build riproducibili ed evita aumenti imprevisti delle dimensioni quando cambia un latest upstream.
FROM node:20.11.1-slimVerifica rapida
Che cosa caratterizza un'immagine distroless?
Riepilogo
Ora è possibile ridurre drasticamente le dimensioni delle immagini:
- Scegliere basi
-slim,-alpine, distroless oscratch - Concatenare e pulire i layer
RUN; usare.dockerignore - Le build multi-stage eliminano la toolchain
- Misurare con
docker historye bloccare le versioni
Immagini più piccole significano distribuzioni più veloci e sicure.
Impara Docker & DevOps Fundamentals con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Riduzione delle immagini con basi Slim e Distroless» è gratuita?
Sì — il testo completo di «Riduzione delle immagini con basi Slim e Distroless» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
Cosa imparerò in «Riduzione delle immagini con basi Slim e Distroless»?
Riduca le immagini finali scegliendo immagini di base minimali, rimuovendo gli strumenti di build e usando basi distroless o scratch per pull più rapidi e una superficie d'attacco ridotta. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?
Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Riduzione delle immagini con basi Slim e Distroless»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?
Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Build multi-stage per l’efficienza
- Utilizzo della cache di build
- Best practice di sicurezza per i Dockerfile
- Riduzione delle immagini con basi Slim e Distroless