Aller au contenu principal

Exemples simples

Lancer un conteneur Docker simplement avec la commande docker run

Notions théoriques

Rappels
  • 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.
astuce

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 conteneur
  • args : (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 :

  1. Cherche l’image localement. Si elle n’existe pas, il la télécharge depuis Docker Hub.
  2. Crée un conteneur à partir de cette image.
  3. Exécute la commande (par défaut ou personnalisée).
  4. 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 :

  1. Tirer l’image officielle nginx depuis Docker Hub :

    docker pull nginx
  2. Lancer un conteneur Nginx en arrière-plan, en exposant le port 8080 :

    docker run -d -p 8080:80 --name monsite nginx
  3. Vérifier que le conteneur tourne :

    docker ps
  4. Accéder à http://localhost:8080 dans un navigateur : une page Nginx doit s’afficher.

  5. Arrêter le conteneur :

    docker stop monsite
  6. Supprimer le conteneur :

    docker rm monsite
  7. Supprimer l’image (optionnel) :

    docker rmi nginx

Test de mémorisation/compréhension


Quelle option permet de lancer un conteneur en arrière-plan ?


Quelle est la bonne commande pour lancer un conteneur Ubuntu en mode interactif ?


Que fait l’option --rm ?


Quelle commande permet de lister les conteneurs en cours d'exécution ?


Quel est l’effet de la commande : docker run -p 8080:80 nginx ?


À quoi sert l’option -v dans docker run ?


Quelle commande supprime un conteneur arrêté ?


Quel est le rôle de Docker Hub ?


Quelle commande exécute un script Python dans un conteneur temporaire ?


Que fait la commande docker rmi nginx ?



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.

astuce

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

É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

É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

É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

Étape 5 — Nettoyer l’environnement

Arrêter et supprimer le conteneur, puis supprimer le dossier local.

Une solution

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

É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

É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

É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

Étape 5 — Nettoyer l’environnement

Arrêter et supprimer le conteneur, puis supprimer le dossier du projet.

Une solution

É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

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

É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

É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

É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

É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

Étape 6 — Nettoyer l’environnement

Supprimer les fichiers et le dossier local.

Une solution

É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