Aller au contenu

Docker history

De Marmits Wiki
Version datée du 1 juin 2025 à 01:52 par Geo (discussion | contributions) (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... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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 inutilement lourde).

3. **Déboguer des problèmes**

  Retracer les modifications apportées à l’image.

---

      1. **Exemple de sortie**

```bash IMAGE CREATED CREATED BY SIZE COMMENT 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 123456789abc 1 hour ago /bin/sh -c #(nop) ENV PYTHONUNBUFFERED=1 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 ```

---

      1. **Clés à retenir**

- **`SIZE`** : Taille ajoutée par chaque couche.

 *Les lignes avec `0B` sont des métadonnées (ex: `ENV`, `CMD`).*

- **`CREATED BY`** : Commande exécutée pour créer la couche.

 *Les commandes tronquées peuvent être affichées en entier avec `--no-trunc`.*

- **`IMAGE`** : ID de la couche intermédiaire (souvent inutile sauf pour du debug avancé).

---

      1. **Options utiles**

| Option | Description | |----------------------|-----------------------------------------------------------------------------| | `--no-trunc` | Affiche les commandes complètes (non tronquées). Ex: `docker history --no-trunc mon-image:latest` | | `--format "Modèle:.ID\tModèle:.CreatedBy\tModèle:.Size"` | Formatage personnalisé (ex: pour extraire des données). | | `--human=true` | Affiche les tailles en format lisible (Mo, Go) *(activé par défaut)*. |

---

      1. **Exemple d'optimisation**

Si vous voyez une couche `RUN apt-get install` très volumineuse, vous pouvez : - **Fusionner les commandes** dans un seul `RUN` pour réduire les couches. - **Nettoyer les caches** dans la même instruction (ex: `apt-get clean`).

    • Dockerfile optimisé :**

```dockerfile RUN apt-get update \

   && apt-get install -y python3 \
   && apt-get clean \
   && rm -rf /var/lib/apt/lists/*

```

---

      1. **Différence avec `docker inspect`**

- `docker history` → **Couches de construction** (empilement des instructions). - `docker inspect` → **Métadonnées globales** (taille totale, variables, ports, etc.).

Pour voir la taille totale de l’image : ```bash docker inspect mon-image:latest --format='Modèle:.Size' | numfmt --to=iec ```