Aller au contenu

Explorateur d’image Docker

Docker Image Explorer

Ouvre une archive d’image exportée et montre pour chaque couche la commande, le poids et les fichiers ajoutés ou supprimés.

Ouvre une image Docker ou OCI exportée et montre ce que chaque couche contient réellement — sa taille, l'étape du Dockerfile qui l'a produite, les fichiers qu'elle ajoute et ceux qu'elle supprime des couches inférieures. C'est ainsi que l'on découvre pourquoi une image pèse trois cents mégaoctets.

🔒 Fonctionne entièrement dans votre navigateurdockerocilayersinspect

Déposez une image exportée (.tar)

Issue de `docker save image:tag -o image.tar` ou de podman save. Analysée dans cet onglet ; rien n’est envoyé.

Ouvre aussi bien les tars de docker save que les dispositions d’image OCI, et aligne chaque couche sur son étape du Dockerfile à partir de l’history de la configuration (les étapes marquées empty_layer — ENV, CMD, LABEL — ne créent aucune couche et sont listées à part). Les suppressions se lisent d’après la convention whiteout d’OCI : une entrée .wh.name retire name des couches du dessous ; le fichier existe toujours dans la couche inférieure et coûte toujours ses octets.

Comment s’en servir

  1. Exportez l'image

    `docker save image:tag -o image.tar`, ou l'équivalent `podman save`. Une disposition d'image OCI fonctionne aussi.

  2. Déposez le tar

    Il est analysé dans un worker, dans cet onglet. Rien n'est envoyé, ce qui compte parce qu'un tar d'image contient tout votre système de fichiers.

  3. Ouvrez les grosses couches

    Chaque ligne montre sa taille sous forme de barre et son étape de Dockerfile. En déplier une liste les plus gros fichiers qu'elle ajoute, et séparément ce qu'elle supprime et ce qu'elle masque.

Questions fréquentes

J'ai supprimé le fichier dans un `RUN` ultérieur — pourquoi l'image est-elle toujours aussi grosse ?

Parce qu'une suppression est elle-même une couche. La convention whiteout d'OCI écrit une entrée `.wh.nom` qui masque `nom` pour les couches inférieures ; le fichier d'origine est toujours là, toujours livré, toujours compté. Supprimez-le dans le `RUN` qui l'a créé, ou passez à une compilation multi-étapes.

Pourquoi certaines étapes du Dockerfile n'ont-elles pas de couche ?

ENV, CMD, LABEL, EXPOSE et compagnie ne changent que la configuration, pas le système de fichiers : l'historique de l'image les marque donc `empty_layer`. Elles sont listées à part ici pour que la numérotation des couches continue de correspondre à ce qui coûte réellement des octets.

Peut-il ouvrir une image directement depuis un registre ?

Non — il ne lit qu'un tar local. Tirer l'image supposerait que cette page s'authentifie auprès de votre registre, ce qui est un autre outil avec un autre modèle de menace. `docker save` n'est qu'à une commande.

La taille indiquée ici ne correspond pas à `docker images`.

Les deux mesurent des choses différentes. `docker images` rapporte la taille sur disque après que le pilote de stockage a dédupliqué les couches partagées ; ceci rapporte le contenu décompressé de chaque couche de l'export. Les deux sont vraies ; la seconde est celle qui vous dit ce qu'un `docker pull` transfère.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.