Pular para o conteúdo

Explorador de imagem Docker

Docker Image Explorer

Abre o tarball de uma imagem exportada e mostra o comando, o tamanho e os arquivos adicionados ou apagados por cada camada.

Abre uma imagem Docker ou OCI exportada e mostra o que cada camada de fato contém: seu tamanho, o passo do Dockerfile que a produziu, os arquivos que ela adiciona e os arquivos que ela apaga das camadas abaixo. É assim que você descobre por que uma imagem tem trezentos megabytes.

🔒 Roda inteiramente no seu navegadordockerocilayersinspect

Solte uma imagem exportada (.tar)

De `docker save image:tag -o image.tar` ou do podman save. Analisado nesta aba; nada é enviado.

Abre tanto os tar do docker save quanto os layouts de imagem OCI, e alinha cada camada com o passo do Dockerfile dela a partir do history da configuração (os passos marcados com empty_layer — ENV, CMD, LABEL — não criam camada nenhuma e são listados à parte). As remoções são lidas da convenção whiteout do OCI: uma entrada .wh.name tira name das camadas de baixo; o arquivo continua existindo na camada inferior e continua custando os bytes dele.

Como usar

  1. Exporte a imagem

    `docker save image:tag -o image.tar`, ou o `podman save` equivalente. Um layout de imagem OCI também funciona.

  2. Solte o tar

    Ele é analisado em um worker nesta aba. Nada é enviado, o que importa porque um tar de imagem contém o seu sistema de arquivos inteiro.

  3. Abra as camadas grandes

    Cada linha mostra o tamanho como uma barra e o passo do Dockerfile. Expandir uma lista os maiores arquivos que ela adiciona e, separadamente, o que ela apaga e o que ela esconde.

Perguntas frequentes

Apaguei o arquivo em um RUN posterior. Por que a imagem continua grande?

Porque uma exclusão é ela mesma uma camada. A convenção de whiteout do OCI grava uma entrada `.wh.name` que esconde `name` das camadas abaixo; o arquivo original continua lá, continua sendo distribuído, continua contando. Apague no mesmo `RUN` que o criou, ou use um build multiestágio.

Por que alguns passos do Dockerfile não têm camada?

ENV, CMD, LABEL, EXPOSE e companhia mudam só a configuração, não o sistema de arquivos, então o histórico da imagem os marca como `empty_layer`. Aqui eles são listados separadamente para que a numeração das camadas continue batendo com o que de fato custa bytes.

Ele abre uma imagem direto de um registry?

Não: ele lê só um tar local. Fazer pull significaria esta página se autenticar no seu registry, que é uma ferramenta diferente com um modelo de ameaças diferente. `docker save` está a um comando de distância.

O tamanho aqui não bate com o `docker images`.

Eles medem coisas diferentes. `docker images` relata o tamanho em disco depois de o driver de armazenamento deduplicar as camadas compartilhadas; isto relata o conteúdo descompactado de cada camada na exportação. Os dois são verdade; o segundo é o que te diz o que um `docker pull` transfere.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.