« Docker Images » : différence entre les versions

Aucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Docker image Info ==
<syntaxhighlight lang="bash" copy>
docker inspect phpmyadmin --format 'Image={{.Config.Image}} | ImageID={{.Image}}' ; docker image inspect phpmyadmin --format 'Tag={{index .RepoTags 0}} | ID={{.Id}} | Created={{.Created}}'</syntaxhighlight>
== Vérifier la date de création d'une image ==
<syntaxhighlight lang="bash" copy>docker image inspect debian:latest --format='{{.Id}} {{.Created}}'</syntaxhighlight>
== Copie locale ==
== 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.
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.
Ligne 44 : Ligne 51 :
Pour éviter toute confusion ou écrasement accidentel, vous pouvez aussi versionner votre image locale :
Pour éviter toute confusion ou écrasement accidentel, vous pouvez aussi versionner votre image locale :


<syntaxhighlight lang="bash">docker tag debian:latest local/debian:2025-06</syntaxhighlight>
<syntaxhighlight lang="bash" copy>docker tag debian:latest local/debian:2025-06</syntaxhighlight>
Et dans le <code>Dockerfile</code> :
Et dans le <code>Dockerfile</code> :


Ligne 55 : Ligne 62 :


<span id="étapes-pour-mettre-à-jour-limage-debianlatest-depuis-docker-hub"></span>
<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 ===
=== ✅ '''Étapes pour mettre à jour l’image <code>debian:latest</code> depuis Docker Hub ''' ===


<span id="supprimer-ou-retaguer-limage-locale"></span>
<span id="supprimer-ou-retaguer-limage-locale"></span>
Ligne 62 : Ligne 69 :
Si tu avais tagué une image locale comme ceci :
Si tu avais tagué une image locale comme ceci :


<syntaxhighlight lang="bash">docker tag debian:latest local/debian:latest</syntaxhighlight>
<syntaxhighlight lang="bash" copy>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>
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>


Ligne 68 : Ligne 75 :
==== 2. '''Tirer la dernière version depuis Docker Hub''' ====
==== 2. '''Tirer la dernière version depuis Docker Hub''' ====


<syntaxhighlight lang="bash">docker pull debian:latest</syntaxhighlight>
<syntaxhighlight lang="bash" copy>docker pull debian:latest</syntaxhighlight>
Cela télécharge la version la plus récente de l’image officielle.
Cela télécharge la version la plus récente de l’image officielle.


Ligne 76 : Ligne 83 :
Si tu veux continuer à utiliser un tag local dans ton <code>Dockerfile</code> :
Si tu veux continuer à utiliser un tag local dans ton <code>Dockerfile</code> :


<syntaxhighlight lang="bash">docker tag debian:latest local/debian:latest</syntaxhighlight>
<syntaxhighlight lang="bash" copy>docker tag debian:latest local/debian:latest</syntaxhighlight>
<span id="rebuilder-ton-image"></span>
<span id="rebuilder-ton-image"></span>
==== 4. '''Rebuilder ton image''' ====
==== 4. '''Rebuilder ton image''' ====
Ligne 82 : Ligne 89 :
Ensuite, tu peux reconstruire ton image avec Docker ou Docker Compose :
Ensuite, tu peux reconstruire ton image avec Docker ou Docker Compose :


<syntaxhighlight lang="bash">docker compose build --no-cache</syntaxhighlight>
<syntaxhighlight lang="bash" copy>docker compose build --no-cache</syntaxhighlight>
L’option <code>--no-cache</code> garantit que tout est reconstruit à partir de la nouvelle image de base.
L’option <code>--no-cache</code> garantit que tout est reconstruit à partir de la nouvelle image de base.


Ligne 89 : Ligne 96 :


<span id="astuce-bonus-automatiser-la-mise-à-jour"></span>
<span id="astuce-bonus-automatiser-la-mise-à-jour"></span>
=== 🧠 Astuce bonus : Automatiser la mise à jour ===
=== 🧠 Astuce bonus : Automatiser la mise à jour ===


Tu peux créer un petit script <code>update-base.sh</code> :
Tu peux créer un petit script <code>update-base.sh</code> :


<syntaxhighlight lang="bash">#!/bin/bash
<syntaxhighlight lang="bash" copy>#!/bin/bash
docker pull debian:latest
docker pull debian:latest
docker tag debian:latest local/debian:latest
docker tag debian:latest local/debian:latest
docker compose build --no-cache</syntaxhighlight>
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" copy>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" copy>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" copy>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" copy>docker build -t monimage:mon_tag .</syntaxhighlight></li>
<li><p>'''Nettoyer après un build''' :</p>
<syntaxhighlight lang="sh" copy>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]]