Vai al contenuto

Esploratore di immagini Docker

Docker Image Explorer

Apre l’archivio tar di un’immagine esportata e mostra per ogni livello il comando, la dimensione e i file che ha aggiunto o cancellato.

Apre un’immagine Docker o OCI esportata e mostra che cosa contiene davvero ogni layer: la sua dimensione, il passo del Dockerfile che l’ha prodotto, i file che aggiunge e i file che cancella dai layer sottostanti. È il modo per scoprire perché un’immagine pesa trecento megabyte.

🔒 Funziona interamente nel tuo browserdockerocilayersinspect

Lascia cadere un’immagine esportata (.tar)

Da `docker save image:tag -o image.tar` o da podman save. Analizzata in questa scheda; non viene caricato niente.

Apre sia i tar di docker save sia i layout di immagine OCI, e allinea ogni livello al suo passo del Dockerfile leggendo la history della configurazione (i passi segnati con empty_layer — ENV, CMD, LABEL — non creano nessun livello e sono elencati a parte). Le cancellazioni si leggono dalla convenzione whiteout di OCI: una voce .wh.name toglie name dai livelli sottostanti; il file resta comunque nel livello inferiore e continua a costare i suoi byte.

Come si usa

  1. Esportare l’immagine

    `docker save image:tag -o image.tar`, oppure l’equivalente `podman save`. Va bene anche un layout di immagine OCI.

  2. Trascinare dentro il tar

    Viene analizzato in un worker in questa scheda. Non viene caricato nulla, il che conta perché il tar di un’immagine contiene un intero filesystem.

  3. Aprire i layer grandi

    Ogni riga mostra la sua dimensione come barra e il suo passo del Dockerfile. Espandendone una si elencano i file più grandi che aggiunge e, a parte, quello che cancella e quello che nasconde.

Domande frequenti

Ho cancellato il file in un RUN successivo: perché l’immagine è ancora grande?

Perché una cancellazione è essa stessa un layer. La convenzione whiteout di OCI scrive una voce `.wh.nome` che nasconde `nome` ai layer sottostanti; il file originale è ancora lì, viene ancora spedito, viene ancora contato. Va cancellato nello stesso `RUN` che lo ha creato, oppure serve una build multi-stadio.

Perché certi passi del Dockerfile non hanno un layer?

ENV, CMD, LABEL, EXPOSE e compagni cambiano solo la configurazione, non il filesystem, quindi la cronologia dell’immagine li marca `empty_layer`. Qui sono elencati a parte, così la numerazione dei layer continua a corrispondere a quello che costa davvero byte.

Può aprire un’immagine direttamente da un registry?

No: legge soltanto un tar locale. Fare il pull vorrebbe dire che questa pagina si autentica al proprio registry, che è un altro strumento con un altro modello di minaccia. `docker save` è a un comando di distanza.

La dimensione qui non coincide con `docker images`.

Misurano cose diverse. `docker images` riporta la dimensione su disco dopo che il driver di archiviazione ha deduplicato i layer condivisi; qui si riporta il contenuto non compresso di ogni layer nell’esportazione. Sono vere entrambe; la seconda è quella che dice quanto trasferisce un `docker pull`.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.