Livelli e ottimizzazione delle immagini
Scopra come sono strutturate a livelli le immagini Docker e applichi tecniche per ottimizzarne dimensioni e tempi di build.
Livelli e ottimizzazione delle immagini è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 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 DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Layer delle immagini: elementi costitutivi
Le immagini Docker non sono costituite da un unico file gigantesco. Vengono invece create a partire da una serie di layer di sola lettura. Pensi a questi layer come a trasparenze sovrapposte.
Ogni layer rappresenta una modifica all'immagine, rendendo le immagini efficienti e flessibili. Questa struttura a layer è fondamentale per il funzionamento di Docker.

Istruzioni del Dockerfile e layer
Quando scrive un Dockerfile, quasi ogni istruzione crea un nuovo layer sopra quello precedente. Istruzioni come FROM, RUN, COPY e ADD contribuiscono tutte alla creazione di nuovi layer.
Docker esegue queste istruzioni in sequenza, creando ogni nuovo layer sulla base dello stato di quello precedente.
Esaminare la cronologia dell'immagine
Può visualizzare i layer che compongono un'immagine usando il comando docker history. Questo comando mostra ogni istruzione, le relative dimensioni e il momento della creazione, aiutandola a capire come è cresciuta l'immagine.
È uno strumento potente per eseguire il debug dei problemi relativi alle dimensioni delle immagini.
docker history my-image:latestLa potenza della cache dei layer
Docker usa una cache di build intelligente. Se un'istruzione del Dockerfile e il relativo contesto (ad esempio, i file copiati) non sono cambiati dall'ultima build, Docker riutilizza il layer esistente.
Questo riutilizzo accelera notevolmente le build successive, poiché Docker non deve rieseguire i passaggi invariati.
Ottimizzazione 1: ordine intelligente dei layer
L'ordine delle istruzioni nel Dockerfile è fondamentale per usare efficacemente la cache. Inserisca in cima le istruzioni che cambiano raramente, come l'installazione delle dipendenze di sistema.
Le istruzioni che cambiano spesso, come la copia del codice dell'applicazione, dovrebbero essere inserite più in basso. In questo modo, se cambia solo il codice, Docker può riutilizzare i layer memorizzati nella cache relativi alle dipendenze stabili.
Esempio: ottimizzare l'ordine dei layer
Confronti questi due frammenti di Dockerfile. L'ordine corretto inserisce prima le dipendenze stabili, permettendo a Docker di memorizzarle nella cache e di ricreare solo i layer relativi al codice dell'applicazione soggetto a modifiche.
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]Ottimizzazione 2: consolidare i comandi RUN
Ogni comando RUN in genere crea un nuovo layer. Può ridurre il numero di layer e spesso anche le dimensioni finali dell'immagine combinando più comandi in un'unica istruzione RUN.
Usi l'operatore && \ per concatenare i comandi, facendoli diventare parte di un unico layer atomico.
Esempio: concatenare i comandi RUN
Invece di usare più comandi RUN, li concateni con && \. In questo modo crea un unico layer più efficiente per tutte queste operazioni.
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
CMD ["bash"]Ottimizzazione 3: eliminare i file inutili
Elimini sempre i file necessari solo durante il processo di build. Ad esempio, le cache dei gestori di pacchetti (come apt-get clean) o gli artefatti temporanei di build possono aumentare notevolmente le dimensioni dei layer dell'immagine.
Eliminarli all'interno dello stesso comando RUN che li ha creati assicura che non persistano in un layer precedente.
Verifica rapida: ottimizzazione delle immagini
Consideri il seguente frammento di Dockerfile:
FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]Quale delle seguenti modifiche ottimizzerebbe maggiormente questo Dockerfile per ridurre le dimensioni dell'immagine e potenzialmente velocizzare le build successive?
Riepilogo: immagini più leggere e veloci
Ha imparato che le immagini Docker vengono create a layer, e che ogni istruzione spesso ne crea uno nuovo. Comprendere questo meccanismo è fondamentale per l'ottimizzazione!
- Ordini con attenzione le istruzioni per aumentare al massimo gli utilizzi della cache di build.
- Combini più comandi
RUNin uno solo per ridurre il numero di layer. - Elimini i file temporanei all'interno dei rispettivi comandi
RUNper mantenere ridotte le dimensioni dei layer.
Queste tecniche aiutano a creare immagini Docker più piccole e veloci da compilare, essenziali per deployment efficienti.
Domande Frequenti
La lezione «Livelli e ottimizzazione delle immagini» è gratuita?
Sì — il testo completo di «Livelli e ottimizzazione delle immagini» è 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 DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Livelli e ottimizzazione delle immagini»?
Scopra come sono strutturate a livelli le immagini Docker e applichi tecniche per ottimizzarne dimensioni e tempi di build. Eserciti DevOps Bootcamp 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 DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Livelli e ottimizzazione delle immagini»?
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 DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp 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
- Comprendere i Dockerfile
- Creazione di immagini Docker personalizzate
- Livelli e ottimizzazione delle immagini
- Build multi-stage e immagini più piccole