Partie 2 · Images
Nommer et gérer les images
Une image est caractérisée par un registry, un repository et un tag. La confusion arrive vite : détaillons.
- Registry : service web qui contient les images et les sert via une API REST. Par défaut, Docker Hub ; s'il est omis, c'est lui qui est utilisé.
- Repository : ensemble d'images similaires, avec des tags différents (par abus « le nom de l'image »). Exemples : php, mysql, python.
- Tag : variante dans un repository. Pour php :
7.3-apache,7.3-fpm,latest. Tag par défaut :latest.
Attention : plusieurs tags peuvent pointer vers la même image (php:latest = php:7.3).
docker tag 0e5574283393 monregistry:5000/monimage:v1
Lecture : 0e5574283393 est l'identifiant local de l'image ; monregistry:5000 l'adresse du registry ; monimage le repository ; v1 le tag.
docker tag 0e5574283393 monimage docker tag 0e5574283393 nomutilisateur/monimage
La 1re ligne prend toutes les valeurs par défaut (registry Docker Hub, tag latest), mais on ne pourrait pas la pousser sur Docker Hub : le registry officiel exige de préfixer le repository par le nom d'utilisateur (2e ligne). Seules les images officielles n'ont pas de préfixe.
Vérifie que tu as compris
monregistry:5000/monimage:v1, que vaut le tag ?Manipuler les images
| Commande | Effet |
|---|---|
docker search <terme> | cherche dans le registry, résultats triés par étoiles sur Docker Hub |
docker pull <nom> | télécharge une image ; on créera ensuite un conteneur avec docker run |
docker images | liste les images locales ; la taille = somme des couches |
docker history <image> | étapes de création ; <missing> = conteneur intermédiaire absent de la machine |
docker rmi <image> | supprime une image locale |
docker diff <conteneur> | différences entre un conteneur et son image |
docker commit <conteneur> | crée une image à partir d'un conteneur modifié |
diff + commit permettent la construction manuelle d'images, laborieuse et « généralement pas une pratique recommandée » : on lui préfère le Dockerfile.
Vérifie que tu as compris