Exemples simples
Lancer un conteneur Docker simplement avec la commande
docker run
Notions théoriques
- Docker est un outil qui permet de créer, déployer et exécuter des applications dans des conteneurs.
- Un conteneur est une unité légère, portable et autonome qui contient tout ce dont une application a besoin pour fonctionner : code, bibliothèques, dépendances, etc.
La commande docker run
est l’une des commandes les plus utilisées avec Docker.
Elle permet de créer et de lancer un conteneur à partir d’une image.
Voici la syntaxe générale de la commande docker run
:
docker run [options] image [command] [args]
Composants de la commande
image
: Nom de l’image à utiliser (ex :nginx
,ubuntu
,python
, etc.)command
: (optionnel) Commande à exécuter dans le conteneurargs
: (optionnel) Arguments de la commande à exécuter dans le conteneur
Options courantes de docker run
-d
: Lance le conteneur en arrière-plan (mode détaché)-it
: Combine-i
(mode interactif) et-t
(allocation d’un pseudo-terminal)--name
: Donne un nom personnalisé au conteneur-p
: Redirige un port du conteneur vers un port de la machine hôte (-p 8080:80
)-v
: Monte un volume (dossier partagé entre l’hôte et le conteneur)--rm
: Supprime le conteneur une fois arrêté--env
ou-e
: Définit une variable d’environnement dans le conteneur
Exécution d’un conteneur
Quand on exécute docker run
, Docker :
- Cherche l’image localement. Si elle n’existe pas, il la télécharge depuis Docker Hub.
- Crée un conteneur à partir de cette image.
- Exécute la commande (par défaut ou personnalisée).
- Affiche le résultat ou garde le conteneur actif selon les options.
Exemples d’usage
-
Lancer un conteneur Ubuntu en mode interactif :
docker run -it ubuntu bash
-
Lancer un serveur web Nginx accessible sur le port 8080 :
docker run -d -p 8080:80 nginx
-
Lancer un script Python dans un conteneur :
docker run --rm python:3.11 python -c "print('Hello Docker')"
Cas d’usage typiques
- Tester une application sans l’installer localement
- Isoler un environnement d’exécution
- Lancer un serveur temporaire
- Automatiser des tâches dans un environnement reproductible
Exemple pratique
Il est possible de lancer un conteneur web simple basé sur l’image nginx
et de le rendre accessible sur un navigateur.
Étapes :
-
Tirer l’image officielle
nginx
depuis Docker Hub :docker pull nginx
-
Lancer un conteneur Nginx en arrière-plan, en exposant le port 8080 :
docker run -d -p 8080:80 --name monsite nginx
-
Vérifier que le conteneur tourne :
docker ps
-
Accéder à
http://localhost:8080
dans un navigateur : une page Nginx doit s’afficher. -
Arrêter le conteneur :
docker stop monsite
-
Supprimer le conteneur :
docker rm monsite
-
Supprimer l’image (optionnel) :
docker rmi nginx
Test de mémorisation/compréhension
TP nginx avec volume partagé
Objectif du TP
Créer un conteneur Docker basé sur l’image nginx
, mais cette fois-ci en utilisant un volume partagé entre l’hôte et le conteneur.
Le but est de pouvoir modifier les fichiers HTML sur la machine locale et de voir les changements en temps réel dans le navigateur, via le serveur Nginx du conteneur.
Étape 1 — Créer un dossier local qui servira de volume partagé
Créer un dossier sur la machine hôte qui contiendra une page HTML personnalisée.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 — Lancer un conteneur Nginx avec un volume monté
Utiliser la commande docker run
pour monter le dossier local dans le conteneur, et exposer le port 8080.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 — Vérifier que le serveur fonctionne
Accéder à l’URL http://localhost:8080
depuis un navigateur et vérifier que la page HTML s’affiche.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 — Modifier le fichier HTML et observer les changements en direct
Modifier le fichier HTML local et recharger la page dans le navigateur sans redémarrer le conteneur.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 — Nettoyer l’environnement
Arrêter et supprimer le conteneur, puis supprimer le dossier local.
Une solution
Vous devez être connecté pour voir le contenu.
TP Node.js avec volume partagé
Objectif du TP
Ce TP a pour objectif de vous faire manipuler la commande docker run
dans le cadre d’un projet Node.js simple, avec un volume partagé entre l’hôte et le conteneur. Vous allez :
- Télécharger un petit projet Node.js,
- L'exécuter à l’intérieur d’un conteneur Docker,
- Observer l’effet du volume partagé,
- Modifier le code sans redémarrer le conteneur,
- Nettoyer l’environnement proprement.
Étape 1 — Télécharger un projet Node.js minimal
Télécharger un petit projet Node.js qui affiche "Hello from Docker" sur le port 3000.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 — Lancer un conteneur node
avec un volume partagé
Exécuter le projet Node.js dans un conteneur Docker, en montant le dossier local dans le conteneur et en exposant le port 3000.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 — Vérifier que le serveur fonctionne
Accéder à http://localhost:3000
dans un navigateur ou avec curl
pour vérifier que le serveur répond.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 — Modifier le code source et voir le changement sans redémarrer
Modifier le fichier server.js
pour changer le message affiché, et observer le changement sans redémarrer le conteneur.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 — Nettoyer l’environnement
Arrêter et supprimer le conteneur, puis supprimer le dossier du projet.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 — Pour aller plus loin (facultatif)
Ajouter un fichier package.json
et utiliser npm start
dans le conteneur. Ou bien, utiliser un outil de rechargement automatique comme nodemon
.
Une solution
Vous devez être connecté pour voir le contenu.
TP scripts Python
Objectif du TP
Ce TP vous propose de manipuler Docker pour exécuter un script Python dans un conteneur, tout en utilisant un volume partagé.
Vous allez :
- Créer un script Python localement,
- L’exécuter dans un conteneur Docker basé sur l’image officielle
python
, - Modifier le script sans redémarrer le conteneur (grâce au volume partagé),
- Observer les effets en direct,
- Nettoyer proprement l’environnement.
Étape 1 — Créer un dossier local contenant un script Python
Créer un dossier sur la machine hôte avec un fichier hello.py
contenant un message simple.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 — Lancer un conteneur Python avec un volume partagé
Lancer un conteneur basé sur l’image python:3.11
, en montant le dossier local dans le conteneur, et exécuter le script Python.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 — Modifier le script sans relancer le conteneur
Observer que la modification du script local est immédiatement visible lors de la relance du conteneur, sans reconstruire d’image ou copier de fichier.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 — Ajouter un deuxième fichier et exécuter plusieurs scripts
Ajouter un second fichier Python dans le même dossier, et l’exécuter dans le même conteneur.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 — Lancer un conteneur interactif pour tester du code Python à la volée
Utiliser le mode interactif pour démarrer un conteneur Python dans lequel vous pouvez tester du code directement dans un REPL (console Python).
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 — Nettoyer l’environnement
Supprimer les fichiers et le dossier local.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 7 — Pour aller plus loin (facultatif)
Créer un petit programme Python qui lit un fichier texte (également dans le dossier partagé), et afficher son contenu dans le conteneur.
Une solution
Vous devez être connecté pour voir le contenu.