« Docker history » : différence entre les versions
Page créée avec « La commande **`docker history mon-image:latest`** affiche les couches (layers) qui composent une image Docker, ainsi que leur taille et les commandes qui les ont générées. C'est très utile pour : 1. **Comprendre la construction de l'image** Chaque ligne correspond à une instruction dans le `Dockerfile` (ex: `RUN`, `COPY`, `ENV`). 2. **Identifier les couches les plus volumineuses** Pour optimiser la taille de l'image (ex: repérer une installation... » |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
La commande | La commande '''<code>docker history mon-image:latest</code>''' affiche les couches (layers) qui composent une image Docker, ainsi que leur taille et les commandes qui les ont générées. C’est très utile pour : | ||
# '''Comprendre la construction de l’image'''<br /> | |||
Chaque ligne correspond à une instruction dans le <code>Dockerfile</code> (ex: <code>RUN</code>, <code>COPY</code>, <code>ENV</code>). | |||
# '''Identifier les couches les plus volumineuses'''<br /> | |||
Pour optimiser la taille de l’image (ex: repérer une installation inutilement lourde). | |||
# '''Déboguer des problèmes'''<br /> | |||
Retracer les modifications apportées à l’image. | |||
----- | |||
-- | <span id="exemple-de-sortie"></span> | ||
=== '''Exemple de sortie''' === | |||
<syntaxhighlight lang="bash">IMAGE CREATED CREATED BY SIZE COMMENT | |||
IMAGE CREATED CREATED BY SIZE COMMENT | |||
a1b2c3d4e5f6 2 minutes ago /bin/sh -c apt-get install -y python3 150MB | a1b2c3d4e5f6 2 minutes ago /bin/sh -c apt-get install -y python3 150MB | ||
f6e5d4c3b2a1 5 minutes ago /bin/sh -c apt-get update && apt-get upgrade 50MB | f6e5d4c3b2a1 5 minutes ago /bin/sh -c apt-get update && apt-get upgrade 50MB | ||
123456789abc 1 hour ago /bin/sh -c #(nop) ENV PYTHONUNBUFFERED=1 0B | 123456789abc 1 hour ago /bin/sh -c #(nop) ENV PYTHONUNBUFFERED=1 0B | ||
789abc123def 1 week ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B | 789abc123def 1 week ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B | ||
def123abc456 1 week ago /bin/sh -c #(nop) ADD file:123...in / 120MB | def123abc456 1 week ago /bin/sh -c #(nop) ADD file:123...in / 120MB </syntaxhighlight> | ||
--- | ----- | ||
<span id="clés-à-retenir"></span> | |||
=== '''Clés à retenir''' === | |||
--- | * '''<code>SIZE</code>''' : Taille ajoutée par chaque couche.<br /> | ||
''Les lignes avec <code>0B</code> sont des métadonnées (ex: <code>ENV</code>, <code>CMD</code>).'' | |||
* '''<code>CREATED BY</code>''' : Commande exécutée pour créer la couche.<br /> | |||
''Les commandes tronquées peuvent être affichées en entier avec <code>--no-trunc</code>.'' | |||
* '''<code>IMAGE</code>''' : ID de la couche intermédiaire (souvent inutile sauf pour du debug avancé). | |||
--- | ----- | ||
<span id="options-utiles"></span> | |||
=== '''Options utiles''' === | |||
{| | |||
!width="22%"| Option | |||
RUN apt-get update \ | !width="77%"| Description | ||
|- | |||
| <code>--no-trunc</code> | |||
| Affiche les commandes complètes (non tronquées). Ex: <code>docker history --no-trunc mon-image:latest</code> | |||
|- | |||
| <code>--format "{{.ID}}\t{{.CreatedBy}}\t{{.Size}}"</code> | |||
| Formatage personnalisé (ex: pour extraire des données). | |||
|- | |||
| <code>--human=true</code> | |||
| Affiche les tailles en format lisible (Mo, Go) ''(activé par défaut)''. | |||
|} | |||
----- | |||
<span id="exemple-doptimisation"></span> | |||
=== '''Exemple d’optimisation''' === | |||
Si vous voyez une couche <code>RUN apt-get install</code> très volumineuse, vous pouvez :<br /> | |||
- '''Fusionner les commandes''' dans un seul <code>RUN</code> pour réduire les couches.<br /> | |||
- '''Nettoyer les caches''' dans la même instruction (ex: <code>apt-get clean</code>). | |||
'''Dockerfile optimisé :''' | |||
<syntaxhighlight lang="dockerfile">RUN apt-get update \ | |||
&& apt-get install -y python3 \ | && apt-get install -y python3 \ | ||
&& apt-get clean \ | && apt-get clean \ | ||
&& rm -rf /var/lib/apt/lists/* | && rm -rf /var/lib/apt/lists/*</syntaxhighlight> | ||
----- | |||
<span id="différence-avec-docker-inspect"></span> | |||
=== '''Différence avec <code>docker inspect</code>''' === | |||
* <code>docker history</code> → '''Couches de construction''' (empilement des instructions).<br /> | |||
* <code>docker inspect</code> → '''Métadonnées globales''' (taille totale, variables, ports, etc.). | |||
Pour voir la taille totale de l’image : | |||
<syntaxhighlight lang="bash">docker inspect mon-image:latest --format='{{.Size}}' | numfmt --to=iec</syntaxhighlight> | |||
docker inspect mon-image:latest --format='{{.Size}}' | numfmt --to=iec | |||
[[Catégorie:Docker]] | [[Catégorie:Docker]] | ||