🔝 Retour au Sommaire
Créer et gérer des conteneurs est l'essence même de Docker. Dans cette section, vous allez apprendre les commandes fondamentales qui vous permettront de contrôler le cycle de vie de vos conteneurs : les créer, les démarrer, les arrêter et les redémarrer.
Ces quatre commandes (run, start, stop, restart) sont celles que vous utiliserez le plus souvent dans votre travail quotidien avec Docker.
docker run est la commande la plus importante de Docker. Elle effectue deux actions en une seule commande :
- Elle crée un nouveau conteneur à partir d'une image
- Elle démarre immédiatement ce conteneur
docker run <nom_de_l_image>Testons avec l'image la plus simple de Docker :
docker run hello-worldCette commande va :
- Chercher l'image
hello-worldlocalement - Si elle n'existe pas, la télécharger depuis Docker Hub
- Créer un conteneur à partir de cette image
- Exécuter le conteneur (qui affiche un message de bienvenue)
- Arrêter automatiquement le conteneur une fois la tâche terminée
Lançons un serveur web Nginx :
docker run nginxVous remarquerez que votre terminal semble "bloqué". C'est normal ! Le conteneur s'exécute en mode attaché (au premier plan) et affiche ses logs en temps réel. Pour arrêter le conteneur, appuyez sur Ctrl+C.
Pour que le conteneur s'exécute en arrière-plan (mode détaché) sans bloquer votre terminal :
docker run -d nginxDocker affichera alors l'ID du conteneur (une longue chaîne de caractères) :
f4d5e8a9b2c1d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8
Votre terminal redevient disponible, et le conteneur continue de fonctionner en arrière-plan.
Par défaut, Docker attribue un nom aléatoire à chaque conteneur (comme "clever_einstein" ou "hungry_tesla"). Pour faciliter la gestion, donnez un nom explicite à vos conteneurs :
docker run -d --name mon-serveur-web nginxVous pourrez ensuite référencer ce conteneur facilement par son nom au lieu de son ID.
Les conteneurs sont isolés du réseau de votre machine. Pour accéder à un service dans le conteneur (comme un serveur web), vous devez publier ses ports :
docker run -d -p 8080:80 --name mon-nginx nginxSyntaxe : -p <port_hôte>:<port_conteneur>
8080: le port de votre machine (hôte)80: le port à l'intérieur du conteneur
Vous pouvez maintenant accéder à Nginx via votre navigateur à l'adresse http://localhost:8080
Par défaut, un conteneur arrêté reste présent sur votre système. L'option --rm supprime automatiquement le conteneur une fois qu'il s'arrête :
docker run --rm nginxC'est utile pour les tests rapides et éviter l'accumulation de conteneurs inutilisés.
Pour interagir directement avec un conteneur (par exemple, ouvrir un terminal dans un conteneur Ubuntu) :
docker run -it ubuntu bash-i: mode interactif (garde l'entrée standard ouverte)-t: alloue un pseudo-terminal
Vous vous retrouvez alors à l'intérieur du conteneur Ubuntu avec un shell bash. Tapez exit pour en sortir.
Vous pouvez passer des variables d'environnement au conteneur :
docker run -d -e MYSQL_ROOT_PASSWORD=monsecret -e MYSQL_DATABASE=mabase mysqlVoici une commande docker run complète qui combine plusieurs options :
docker run -d \
--name mon-application \
-p 3000:3000 \
-e NODE_ENV=production \
-e API_KEY=ma-cle-secrete \
--rm \
node-app:latestCette commande :
- Lance le conteneur en arrière-plan (
-d) - Le nomme "mon-application" (
--name) - Mappe le port 3000 (
-p) - Définit des variables d'environnement (
-e) - Le supprimera automatiquement à l'arrêt (
--rm) - Utilise l'image
node-appavec le taglatest
docker stop arrête proprement un conteneur en cours d'exécution. Docker envoie d'abord un signal SIGTERM (demande d'arrêt gracieux), puis attend 10 secondes avant d'envoyer un SIGKILL (arrêt forcé) si nécessaire.
docker stop <nom_ou_id_conteneur>Arrêter un conteneur par son nom :
docker stop mon-nginxArrêter un conteneur par son ID (les premiers caractères suffisent) :
docker stop f4d5e8a9Arrêter plusieurs conteneurs en une seule commande :
docker stop conteneur1 conteneur2 conteneur3Si votre application nécessite plus de temps pour s'arrêter proprement :
docker stop -t 30 mon-conteneurL'option -t spécifie le délai en secondes (ici 30 secondes au lieu de 10).
docker start démarre un conteneur qui a été préalablement créé mais qui est arrêté. Contrairement à docker run, cette commande ne crée pas de nouveau conteneur.
docker start <nom_ou_id_conteneur>Démarrer un conteneur arrêté :
docker start mon-nginxDémarrer et attacher le terminal aux logs (mode non détaché) :
docker start -a mon-nginxC'est une source de confusion fréquente pour les débutants :
| Commande | Action | Quand l'utiliser |
|---|---|---|
docker run |
Crée un nouveau conteneur et le démarre | Première utilisation d'une image |
docker start |
Démarre un conteneur existant qui est arrêté | Redémarrer un conteneur que vous avez déjà créé |
Analogie :
docker run= acheter une nouvelle voiture et la démarrerdocker start= démarrer votre voiture existante qui était garée
# Première fois : création et démarrage
docker run -d --name mon-app nginx
# Arrêt du conteneur
docker stop mon-app
# Redémarrage du conteneur existant
docker start mon-app
# Si vous faites "docker run" à nouveau, cela créerait un NOUVEAU conteneur
# et échouerait car le nom "mon-app" est déjà prisdocker restart est un raccourci qui combine docker stop puis docker start. Elle redémarre un conteneur en cours d'exécution.
docker restart <nom_ou_id_conteneur>Redémarrer un conteneur :
docker restart mon-nginxRedémarrer avec un délai personnalisé :
docker restart -t 20 mon-conteneur- Après avoir modifié un fichier de configuration
- Quand une application est instable et nécessite un redémarrage
- Pour appliquer certains changements d'environnement
Voici le cycle de vie typique d'un conteneur avec les commandes associées :
┌─────────────────────────────────────────┐
│ 1. Créer et démarrer : docker run │
└────────────────┬────────────────────────┘
│
▼
┌───────────────┐
│ RUNNING │ ◄──┐
│ (en cours) │ │
└───────┬───────┘ │
│ │
│ │
docker stop │ │ docker start
│ │ docker restart
▼ │
┌───────────────┐ │
│ STOPPED │ ───┘
│ (arrêté) │
└───────────────┘
│
│ docker rm
▼
┌───────────────┐
│ DELETED │
│ (supprimé) │
└───────────────┘
Voici un tableau récapitulatif des options les plus utiles pour docker run :
| Option | Description | Exemple |
|---|---|---|
-d |
Mode détaché (arrière-plan) | docker run -d nginx |
--name |
Donner un nom au conteneur | docker run --name web nginx |
-p |
Publier un port | docker run -p 8080:80 nginx |
-e |
Variable d'environnement | docker run -e VAR=valeur nginx |
-it |
Mode interactif avec terminal | docker run -it ubuntu bash |
--rm |
Supprimer automatiquement après l'arrêt | docker run --rm nginx |
-v |
Monter un volume | docker run -v /data:/app/data nginx |
--network |
Connecter à un réseau | docker run --network mon-reseau nginx |
docker stop $(docker ps -q)Explication :
docker ps -qliste les IDs de tous les conteneurs en cours- Ces IDs sont passés à
docker stop
docker start $(docker ps -aq -f status=exited)# ✅ Bon
docker run -d --name mon-app-prod nginx
# ❌ Éviter (nom aléatoire difficile à retrouver)
docker run -d nginx# Pour les tests rapides
docker run --rm -p 8080:80 nginx# ✅ Clair et contrôlé
docker run -d -p 8080:80 nginx
# ❌ Éviter de mapper tous les ports automatiquement
docker run -d -P nginx# ✅ Bon (version fixée)
docker run -d nginx:1.27.3
# ❌ Éviter en production (version changeante)
docker run -d nginx:latestdocker run -d \
--name mon-application \
-p 3000:3000 \
-e NODE_ENV=production \
--restart unless-stopped \
mon-image:v1.0Problème : Vous essayez de créer un conteneur avec un nom déjà utilisé.
Solution :
# Supprimer l'ancien conteneur
docker rm mon-conteneur
# Ou utiliser un nom différent
docker run --name mon-conteneur-v2 nginxProblème : Docker n'est pas démarré ou vous n'avez pas les permissions.
Solution :
- Vérifiez que Docker Desktop est lancé (Windows/Mac)
- Sur Linux, démarrez le service :
sudo systemctl start docker - Vérifiez vos permissions : ajoutez votre utilisateur au groupe docker
Problème : Le port que vous essayez d'utiliser est déjà occupé.
Solution :
# Utiliser un autre port
docker run -d -p 8081:80 nginx
# Ou arrêter le conteneur qui utilise ce port
docker stop <conteneur_utilisant_le_port>Dans cette section, vous avez appris à :
- ✅ Créer et démarrer des conteneurs avec
docker run - ✅ Arrêter des conteneurs proprement avec
docker stop - ✅ Redémarrer des conteneurs existants avec
docker start - ✅ Redémarrer rapidement avec
docker restart - ✅ Comprendre la différence entre run et start
- ✅ Utiliser les options essentielles :
-d,--name,-p,-e,-it,--rm - ✅ Appliquer les bonnes pratiques pour une gestion efficace
Vous maîtrisez maintenant les commandes fondamentales pour contrôler vos conteneurs Docker. Dans la prochaine section, vous apprendrez à lister et inspecter vos conteneurs pour obtenir des informations détaillées sur leur état.