Aller au contenu

« Docker Images » : différence entre les versions

De Marmits Wiki
Aucun résumé des modifications
Aucun résumé des modifications
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

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.