Images et conteneurs
Image vs conteneur : la distinction fondamentale
C'est la confusion la plus courante chez les débutants. Voici la distinction claire :
Image Docker
Un blueprint — le modèle. Immuable, en lecture seule. Contient le système de fichiers de l'app. Comme un plan d'architecte.
Conteneur Docker
Une instance en cours d'exécution d'une image. Un processus isolé avec sa couche d'écriture. Comme une maison construite depuis le plan.
Depuis une seule image, tu peux lancer 10 conteneurs simultanément. Chacun est indépendant — ils partagent le même blueprint mais ont leur propre état.
Gérer les images
# Télécharger une image depuis Docker Hub
docker pull nginx
docker pull nginx:1.25 # avec un tag précis
docker pull node:20-alpine
# Lister les images locales
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nginx latest a6bd71f48f68 2 weeks ago 192MB
# node 20-alpine f45b3f0cd2a2 3 weeks ago 136MB
# Supprimer une image
docker rmi nginx
Gérer les conteneurs
# Lancer un conteneur en arrière-plan (-d = detach)
docker run -d nginx
# Lister les conteneurs en cours d'exécution
docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
# a3f2c1b0e9d4 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes elegant_ride
# Lister TOUS les conteneurs (y compris arrêtés)
docker ps -a
# Arrêter un conteneur
docker stop a3f2c1b0e9d4 # ou par nom : docker stop elegant_ride
# Supprimer un conteneur arrêté
docker rm a3f2c1b0e9d4
# Supprimer automatiquement après arrêt
docker run --rm nginx
Port mapping : exposer un service
Par défaut, les ports d'un conteneur ne sont pas accessibles depuis l'extérieur.
Le flag -p mappe un port de ta machine vers un port du conteneur.
# Lancer nginx accessible sur le port 8080 de ta machine
# -p PORT_HOTE:PORT_CONTENEUR
docker run -d -p 8080:80 nginx
# Visite http://localhost:8080 dans ton navigateur
# Donner un nom au conteneur
docker run -d -p 8080:80 --name mon-nginx nginx
# Voir les logs du conteneur
docker logs mon-nginx
docker logs -f mon-nginx # -f = follow (temps réel)
# Ouvrir un shell dans le conteneur
docker exec -it mon-nginx bash
-it signifie interactive + tty — indispensable pour ouvrir un shell interactif
dans un conteneur. Sans ces flags, la commande s'exécute sans terminal interactif.
Nettoyage
Docker accumule vite images, conteneurs arrêtés et couches orphelines. Ces commandes nettoient tout ce qui n'est plus utilisé :
# Supprimer tous les conteneurs arrêtés
docker container prune
# Supprimer les images non utilisées
docker image prune
# Tout nettoyer d'un coup (conteneurs, images, réseaux, volumes orphelins)
docker system prune -a
- Image = template immuable. Conteneur = instance en cours d'exécution.
docker pulltélécharge une image.docker imagesliste les images locales.docker run -d -p 8080:80 nginxlance nginx en arrière-plan sur le port 8080.docker ps= conteneurs actifs.docker ps -a= tous les conteneurs.docker stoparrête,docker rmsupprime un conteneur.