« Docker Images » : différence entre les versions

Page créée avec « == Copie locale == Conserver une copie locale de l’image <code>debian:latest</code> et Construire une image Docker à partir de cette copie locale, sans la re-télécharger depuis Docker Hub à chaque fois. ----- <span id="étapes-à-suivre"></span> === ✅ '''Étapes à suivre''' === <span id="télécharger-et-taguer-localement-limage-debianlatest"></span> ==== 1. '''Télécharger et taguer localement l’image <code>debian:latest</code>''' ==== Avant de... »
 
Aucun résumé des modifications
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 48 : Ligne 48 :


<syntaxhighlight lang="dockerfile">FROM local/debian:2025-06 AS tools</syntaxhighlight>
<syntaxhighlight lang="dockerfile">FROM local/debian:2025-06 AS tools</syntaxhighlight>
-----
-----
<span id="étapes-pour-mettre-à-jour-limage-debianlatest-depuis-docker-hub"></span>
=== ✅ '''Étapes pour mettre à jour l’image <code>debian:latest</code> depuis Docker Hub ''' ===
<span id="supprimer-ou-retaguer-limage-locale"></span>
==== 1. '''Supprimer ou retaguer l’image locale''' ====
Si tu avais tagué une image locale comme ceci :
<syntaxhighlight lang="bash">docker tag debian:latest local/debian:latest</syntaxhighlight>
Tu peux soit : - Supprimer ce tag local : <code>bash  docker rmi local/debian:latest</code> - Ou le renommer pour le conserver : <code>bash  docker tag local/debian:latest local/debian:backup</code>
<span id="tirer-la-dernière-version-depuis-docker-hub"></span>
==== 2. '''Tirer la dernière version depuis Docker Hub''' ====
<syntaxhighlight lang="bash">docker pull debian:latest</syntaxhighlight>
Cela télécharge la version la plus récente de l’image officielle.
<span id="optionnel-re-tagger-pour-ton-usage-local"></span>
==== 3. '''(Optionnel) Re-tagger pour ton usage local''' ====
Si tu veux continuer à utiliser un tag local dans ton <code>Dockerfile</code> :
<syntaxhighlight lang="bash">docker tag debian:latest local/debian:latest</syntaxhighlight>
<span id="rebuilder-ton-image"></span>
==== 4. '''Rebuilder ton image''' ====
Ensuite, tu peux reconstruire ton image avec Docker ou Docker Compose :
<syntaxhighlight lang="bash">docker compose build --no-cache</syntaxhighlight>
L’option <code>--no-cache</code> garantit que tout est reconstruit à partir de la nouvelle image de base.
-----
<span id="astuce-bonus-automatiser-la-mise-à-jour"></span>
=== 🧠 Astuce bonus : Automatiser la mise à jour ===
Tu peux créer un petit script <code>update-base.sh</code> :
<syntaxhighlight lang="bash">#!/bin/bash
docker pull debian:latest
docker tag debian:latest local/debian:latest
docker compose build --no-cache</syntaxhighlight>
== <none>:<none> ==
Lorsque vous voyez une image <code>&lt;none&gt;:&lt;none&gt;</code> dans la liste de <code>docker images</code>, cela signifie qu’il s’agit d’une '''image intermédiaire''' ou d’une '''ancienne version sans tag''', souvent créée dans l’un des cas suivants :
-----
<span id="rebuild-dune-image-avec-le-même-tag"></span>
=== '''1. Rebuild d’une image avec le même tag''' ===
Si vous avez reconstruit une image (par exemple <code>debian12:latest</code>) '''sans supprimer l’ancienne version''', Docker conserve l’ancienne image mais lui retire son tag (elle devient <code>&lt;none&gt;</code>).<br />
- '''Exemple''' :<br />
- Vous aviez <code>debian12:latest</code> (ID: <code>abc123</code>).<br />
- Vous la reconstruisez (nouvel ID: <code>d9997b66177d</code>).<br />
- L’ancienne (<code>abc123</code>) devient <code>&lt;none&gt;</code> car le tag <code>latest</code> a été transféré à la nouvelle version.
-----
<span id="image-intermédiaire-couches-docker-non-nettoyées"></span>
=== '''2. Image intermédiaire (couches Docker non nettoyées)''' ===
Ces images peuvent aussi être des '''couches temporaires''' générées pendant un <code>docker build</code> (surtout si le build a échoué ou n’a pas été nettoyé).
-----
<span id="image-orpheline-plus-référencée-par-aucun-conteneur"></span>
=== '''3. Image orpheline (plus référencée par aucun conteneur)''' ===
Si une image n’est plus utilisée par aucun conteneur et n’a pas de tag, elle apparaît comme <code>&lt;none&gt;</code>.
-----
<span id="que-faire"></span>
=== '''Que faire ?''' ===
<span id="lister-les-images-sans-tag-dangling"></span>
==== '''1. Lister les images sans tag (dangling)''' ====
<syntaxhighlight lang="sh">docker images -f "dangling=true"</syntaxhighlight>
<span id="supprimer-les-images-none-inutiles"></span>
==== '''2. Supprimer les images <code>&lt;none&gt;</code> inutiles''' ====
Pour supprimer '''toutes les images sans tag''' :
<syntaxhighlight lang="sh">docker image prune</syntaxhighlight>
(Option <code>-a</code> pour supprimer aussi les images non utilisées par des conteneurs.)
<span id="supprimer-une-image-spécifique-par-son-id"></span>
==== '''3. Supprimer une image spécifique par son ID''' ====
<syntaxhighlight lang="sh">docker rmi d0045397e427</syntaxhighlight>
<span id="éviter-les-none-à-lavenir"></span>
==== '''4. Éviter les <code>&lt;none&gt;</code> à l’avenir''' ====
<ul>
<li><p>'''Toujours nommer/tagger vos images''' explicitement :</p>
<syntaxhighlight lang="sh">docker build -t monimage:mon_tag .</syntaxhighlight></li>
<li><p>'''Nettoyer après un build''' :</p>
<syntaxhighlight lang="sh">docker system prune -f</syntaxhighlight></li></ul>
-----
<span id="pourquoi-votre-cas-est-particulier"></span>
=== '''Pourquoi votre cas est particulier ?''' ===
Dans votre liste :<br />
- <code>debian12:latest</code> (ID: <code>d9997b66177d</code>) est l’image active.<br />
- <code>&lt;none&gt;</code> (ID: <code>d0045397e427</code>) est très probablement '''l’ancienne version''' de <code>debian12:latest</code> avant un rebuild.
→ Vous pouvez la supprimer sans risque si aucun conteneur ne l’utilise.
-----
<span id="résumé"></span>
=== '''Résumé''' ===
Les images <code>&lt;none&gt;</code> sont des résidus normaux de Docker.<br />
- '''Utilité''' : Permettent des rollbacks ou du caching.<br />
- '''Nettoyage''' : Utilisez <code>docker image prune</code> pour les supprimer si elles ne servent plus.


[[Catégorie:Docker]]
[[Catégorie:Docker]]