# Exercice : Gestion des images Docker
## Informations générales
| Élément | Description |
|-----------------------|-------------|
| **Compétences** | Construire, tagger, documenter et publier des images Docker dans un registre. |
| **Objectifs** | - Comprendre la différence entre une image, un conteneur et un tag
- Construire une image à partir d’un Dockerfile
- Manipuler les tags (`latest`, versions, retaggage)
- Pousser une image vers un registre |
| **Durée estimée** | 60 min |
| **Répertoire de travail** | `C:\Docker\docker-images` (Windows) ou `~/docker/docker-images` (Linux) |
| **Fichiers sources** | Un Dockerfile simple (fourni ci-dessous) |
| **À produire** | - Un document imprimé avec vos observations et réponses |
| **Moyens d’aide** | Le support de cours |
---
## 1. Rappel
- Une **image Docker** est un artefact construit à partir d’un `Dockerfile`.
- Un **tag** permet d’identifier une version spécifique d’une image.
- Sans tag explicite, Docker utilise automatiquement `:latest`.
---
## 2. Questions
### 2.1. Image vs Conteneur
Expliquez la différence entre une **image** et un **conteneur**.
---
### 2.2. Commandes de base
Quelles sont les commandes pour :
- lister les images disponibles localement
- inspecter une image
- supprimer une image
- nettoyer les images orphelines (dangling images)
---
## 3. Échauffement
### 3.1. Construire une image
À partir du `Dockerfile` suivant, construisez une image **sans tag** :
```dockerfile
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y curl
CMD ["bash"]
```
- Quelle est l’apparence de cette image dans `docker image ls` ?
- Que signifient les champs `:` ?
---
### 3.2. Retagger une image
- Identifiez l’`IMAGE ID` de l’image orpheline créée.
- Donnez-lui un tag explicite `toolbox:1.0`.
- Vérifiez dans `docker images`.
---
### 3.3. Construire avec un tag
Reconstruisez la même image en lui donnant directement un tag `toolbox:2.0`.
Comparez avec la version `1.0`.
---
## 4. Cas pratique 1 – Comprendre les tags
1. Re-tagguez `toolbox:2.0` en `toolbox:latest`.
2. Lancez deux conteneurs :
```bash
docker run -it toolbox:1.0
docker run -it toolbox
```
3. Comparez les versions exécutées.
---
## 5. Cas pratique 2 – Supprimer et nettoyer
1. Supprimez le tag `toolbox:1.0`.
2. Observez ce qui se passe avec `docker images`.
3. Exécutez :
```bash
docker image prune
```
➡️ Quelles images sont supprimées ? Quelles restent ?
---
## 6. Cas pratique 3 – Publication
1. Connectez-vous à Docker Hub (`docker login`).
2. Retaggez `toolbox:2.0` en :
```bash
docker tag toolbox:2.0 /toolbox:2.0
```
3. Poussez l’image :
```bash
docker push /toolbox:2.0
```
4. Vérifiez sur hub.docker.com que l’image est bien disponible.
---
## 7. Synthèse
- Qu’est-ce qu’un tag et pourquoi est-il important ?
- Quelle est la différence entre `:latest` et un numéro de version ?
- Pourquoi faut-il être prudent avec `latest` en production ?
---