Leçon 3 / 8
Leçon 03 · Partie 1 — Les bases

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.

template · lecture seule
🏃

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.

instance · en exécution

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

Terminal
# 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

Terminal
# 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.

Terminal
# 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é :

Terminal
# 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
// À retenir
  • Image = template immuable. Conteneur = instance en cours d'exécution.
  • docker pull télécharge une image. docker images liste les images locales.
  • docker run -d -p 8080:80 nginx lance nginx en arrière-plan sur le port 8080.
  • docker ps = conteneurs actifs. docker ps -a = tous les conteneurs.
  • docker stop arrête, docker rm supprime un conteneur.