« Docker Images » : différence entre les versions
Aucun résumé des modifications |
|||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 51 : | 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 69 : | 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 75 : | 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 83 : | 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 89 : | 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 101 : | Ligne 101 : | ||
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 | ||
| Ligne 147 : | Ligne 147 : | ||
==== '''1. Lister les images sans tag (dangling)''' ==== | ==== '''1. Lister les images sans tag (dangling)''' ==== | ||
<syntaxhighlight lang="sh">docker images -f "dangling=true"</syntaxhighlight> | <syntaxhighlight lang="sh" copy>docker images -f "dangling=true"</syntaxhighlight> | ||
<span id="supprimer-les-images-none-inutiles"></span> | <span id="supprimer-les-images-none-inutiles"></span> | ||
==== '''2. Supprimer les images <code><none></code> inutiles''' ==== | ==== '''2. Supprimer les images <code><none></code> inutiles''' ==== | ||
| Ligne 153 : | Ligne 153 : | ||
Pour supprimer '''toutes les images sans tag''' : | Pour supprimer '''toutes les images sans tag''' : | ||
<syntaxhighlight lang="sh">docker image prune</syntaxhighlight> | <syntaxhighlight lang="sh" copy>docker image prune</syntaxhighlight> | ||
(Option <code>-a</code> pour supprimer aussi les images non utilisées par des conteneurs.) | (Option <code>-a</code> pour supprimer aussi les images non utilisées par des conteneurs.) | ||
| Ligne 159 : | Ligne 159 : | ||
==== '''3. Supprimer une image spécifique par son ID''' ==== | ==== '''3. Supprimer une image spécifique par son ID''' ==== | ||
<syntaxhighlight lang="sh">docker rmi d0045397e427</syntaxhighlight> | <syntaxhighlight lang="sh" copy>docker rmi d0045397e427</syntaxhighlight> | ||
<span id="éviter-les-none-à-lavenir"></span> | <span id="éviter-les-none-à-lavenir"></span> | ||
==== '''4. Éviter les <code><none></code> à l’avenir''' ==== | ==== '''4. Éviter les <code><none></code> à l’avenir''' ==== | ||
| Ligne 165 : | Ligne 165 : | ||
<ul> | <ul> | ||
<li><p>'''Toujours nommer/tagger vos images''' explicitement :</p> | <li><p>'''Toujours nommer/tagger vos images''' explicitement :</p> | ||
<syntaxhighlight lang="sh">docker build -t monimage:mon_tag .</syntaxhighlight></li> | <syntaxhighlight lang="sh" copy>docker build -t monimage:mon_tag .</syntaxhighlight></li> | ||
<li><p>'''Nettoyer après un build''' :</p> | <li><p>'''Nettoyer après un build''' :</p> | ||
<syntaxhighlight lang="sh">docker system prune -f</syntaxhighlight></li></ul> | <syntaxhighlight lang="sh" copy>docker system prune -f</syntaxhighlight></li></ul> | ||
| Ligne 173 : | Ligne 173 : | ||
<span id="pourquoi-votre-cas-est-particulier"></span> | <span id="pourquoi-votre-cas-est-particulier"></span> | ||
=== '''Pourquoi votre cas est particulier ?''' === | === '''Pourquoi votre cas est particulier ?''' === | ||
Dernière version du 13 août 2026 à 10:47
Docker image Info
docker inspect phpmyadmin --format 'Image={{.Config.Image}} | ImageID={{.Image}}' ; docker image inspect phpmyadmin --format 'Tag={{index .RepoTags 0}} | ID={{.Id}} | Created={{.Created}}'
Vérifier la date de création d'une image
docker image inspect debian:latest --format='{{.Id}} {{.Created}}'
Copie locale
Conserver une copie locale de l’image debian:latest et Construire une image Docker à partir de cette copie locale, sans la re-télécharger depuis Docker Hub à chaque fois.
✅ Étapes à suivre
1. Télécharger et taguer localement l’image debian:latest
Avant de construire votre image, vous pouvez tirer l’image une fois et la taguer localement :
docker pull debian:latest
docker tag debian:latest local/debian:latest
Cela crée une image locale nommée local/debian:latest.
2. Adapter le Dockerfile
Modifiez la ligne FROM pour utiliser l’image locale :
FROM local/debian:latest AS tools
Cela indique à Docker d’utiliser l’image locale local/debian:latest comme base, sans aller chercher sur Docker Hub.
3. Aucune modification nécessaire dans docker-compose.yml
Le fichier docker-compose.yml n’a pas besoin d’être modifié, car le Dockerfile utilise déjà l’image locale comme base. Docker Compose utilisera cette image locale lors du build.
🧠 Astuce supplémentaire
Pour éviter toute confusion ou écrasement accidentel, vous pouvez aussi versionner votre image locale :
docker tag debian:latest local/debian:2025-06
Et dans le Dockerfile :
FROM local/debian:2025-06 AS tools
✅ Étapes pour mettre à jour l’image debian:latest depuis Docker Hub
1. Supprimer ou retaguer l’image locale
Si tu avais tagué une image locale comme ceci :
docker tag debian:latest local/debian:latest
Tu peux soit : - Supprimer ce tag local : bash docker rmi local/debian:latest - Ou le renommer pour le conserver : bash docker tag local/debian:latest local/debian:backup
2. Tirer la dernière version depuis Docker Hub
docker pull debian:latest
Cela télécharge la version la plus récente de l’image officielle.
3. (Optionnel) Re-tagger pour ton usage local
Si tu veux continuer à utiliser un tag local dans ton Dockerfile :
docker tag debian:latest local/debian:latest
4. Rebuilder ton image
Ensuite, tu peux reconstruire ton image avec Docker ou Docker Compose :
docker compose build --no-cache
L’option --no-cache garantit que tout est reconstruit à partir de la nouvelle image de base.
🧠 Astuce bonus : Automatiser la mise à jour
Tu peux créer un petit script update-base.sh :
#!/bin/bash
docker pull debian:latest
docker tag debian:latest local/debian:latest
docker compose build --no-cache
<none>:<none>
Lorsque vous voyez une image <none>:<none> dans la liste de docker images, 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 :
1. Rebuild d’une image avec le même tag
Si vous avez reconstruit une image (par exemple debian12:latest) sans supprimer l’ancienne version, Docker conserve l’ancienne image mais lui retire son tag (elle devient <none>).
- Exemple :
- Vous aviez debian12:latest (ID: abc123).
- Vous la reconstruisez (nouvel ID: d9997b66177d).
- L’ancienne (abc123) devient <none> car le tag latest a été transféré à la nouvelle version.
2. Image intermédiaire (couches Docker non nettoyées)
Ces images peuvent aussi être des couches temporaires générées pendant un docker build (surtout si le build a échoué ou n’a pas été nettoyé).
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 <none>.
Que faire ?
1. Lister les images sans tag (dangling)
docker images -f "dangling=true"
2. Supprimer les images <none> inutiles
Pour supprimer toutes les images sans tag :
docker image prune
(Option -a pour supprimer aussi les images non utilisées par des conteneurs.)
3. Supprimer une image spécifique par son ID
docker rmi d0045397e427
4. Éviter les <none> à l’avenir
Toujours nommer/tagger vos images explicitement :
docker build -t monimage:mon_tag .
Nettoyer après un build :
docker system prune -f
Pourquoi votre cas est particulier ?
Dans votre liste :
- debian12:latest (ID: d9997b66177d) est l’image active.
- <none> (ID: d0045397e427) est très probablement l’ancienne version de debian12:latest avant un rebuild.
→ Vous pouvez la supprimer sans risque si aucun conteneur ne l’utilise.
Résumé
Les images <none> sont des résidus normaux de Docker.
- Utilité : Permettent des rollbacks ou du caching.
- Nettoyage : Utilisez docker image prune pour les supprimer si elles ne servent plus.