Skip to content

Instantly share code, notes, and snippets.

@DamienDabernat
Last active April 13, 2025 17:57
Show Gist options
  • Save DamienDabernat/df5dccfdb9839ed23886eb21b81b5b65 to your computer and use it in GitHub Desktop.
Save DamienDabernat/df5dccfdb9839ed23886eb21b81b5b65 to your computer and use it in GitHub Desktop.

TP 1 Les bases de Docker

Objectif du TP :

  • Découvrir la notion de conteneur et la comparer à la virtualisation.
  • Apprendre les bases de Docker (installation, commandes principales).
  • Prendre en main quelques commandes Linux pour manipuler le système de fichiers.
  • Lancer des conteneurs simples (hello-world, Nginx).

Rendu :

  • Répondre aux questions écrites dans un fichier de rendu
  • Captures d’écran ou extraits de commandes pour justifier vos résultats (ex. docker ps, uname -a, etc.).

TP1 - Introduction aux conteneurs Docker

Travail de recherche préparatoire

  1. Qu’est-ce qu’une conteneurisation ?

    • Comparez brièvement la conteneurisation (Docker, LXC) à la virtualisation (VM).
    • Quels sont les avantages de la conteneurisation ?
  2. Quelles sont les principales différences entre un conteneur et une machine virtuelle ?

    • Pourquoi dit-on qu’un conteneur est plus léger qu’une VM ?
    • Où se situe la couche système (kernel) dans chaque cas ?
  3. Inscrivez-vous sur Play with Docker

    • Ou, si vous le pouvez, installez Docker sur votre PC

    Play with Docker


  1. Vérifier la version de Docker (si vous êtes en local ou sur PWD) :
    docker version
    docker info
    • Que constatez-vous ? Qu’indiquent ces commandes ?

Découverte de la ligne de commande Linux

Si vous utilisez Play with Docker ou Katacoda, vous disposerez d’un terminal en ligne.

Pour ceux qui utilisent Docker directement sur leur PC, vous pouvez lancer un conteneur Linux allégé pour faire les exercices, par exemple :

docker run -it --name sandbox --rm ubuntu bash
  • Cette commande lance un conteneur Ubuntu interactif (-it) qui s’effacera (--rm) une fois arrêté.
  • Vous pourrez alors exécuter les commandes Linux ci-dessous dans cet environnement.

  1. Tapez :
    uname -a
    • À quoi correspond chaque mot affiché ?
    • Que signifie l’option -a ?

  1. Notions de base dans le système :

    • root directory (/)
    • home directory (~)
    • parent directory (..)
    • working directory (.)

    Questions :

    • Définissez chaque terme et le rôle du symbole associé.
    • Qui a accès à chacun de ces dossiers ?
    • À quoi servent-ils ?
    • Les quels sont relatifs ou absolus ?

  1. Commandes utiles :

    • pwd, cd, ls, mkdir, sudo
    • Testez-les pour naviguer entre les dossiers, créer et supprimer des répertoires.
  2. Exercice :

    • Allez dans /var, créez un dossier learning, puis entrez dedans.
    • Notez les commandes utilisées.

Écrire dans un fichier

  1. Commandes à connaître :

    • nano ou vi (éditeur de texte)
    • touch (crée un fichier vide)
    • mv (renommer/déplacer)
    • cp (copier)
    • rm (supprimer)
  2. Exercice :

    • Créez un fichier COURT-1 (sans extension) via touch ou nano.
    • Dans ce fichier, écrivez un petit texte (par exemple un compliment sur votre intervenant).
    • Enregistrez le fichier (nano, puis Ctrl+O, Ctrl+X). Ou vi avec :wq.
    • Renommez COURT-1 en COURS-1.
    • Revenez rapidement au dossier de départ (en utilisant une commande de 4 caractères max).
    • Copiez le dossier /var/learning dans un sous-dossier cours du dossier home.
    • Supprimez enfin le dossier learning de /var (sans changer de dossier).
  3. Quelles sont les commandes que vous avez tapées ?

    • Indiquez-les dans votre rendu.

Navigation et chemins relatifs

  1. Recréez l’architecture suivante (via des commandes mkdir successives) :

     └── a
         ├── a
         ├── b
         │   ├── 1
         │   └── 2
         └── c
    

    (Vous pouvez utiliser mkdir -p a/b/1 etc. pour la créer rapidement.)

  2. Chemin relatif :

    • Vous êtes dans /a/b/2. Que se passe-t-il après ?
      cd ../../a/../b/../b/1
      • Dans quel dossier vous retrouvez-vous ?

Variables d’environnement

  1. Qu’est-ce qu’une variable d’environnement ?
  2. Tapez :
    printenv
    • Que constatez-vous ?
  3. Exécutez :
    export EDITOR=nano
    • Refaire printenv. Qu’est-ce qui a changé ?
    • À quoi sert export ?
    • Et la commande unset ?

Premier script bash

  1. Rappel : un script bash commence par #!/bin/bash et a souvent une extension .sh.

  2. Exercice :

    • Créez un dossier exercices, puis un fichier exercice1.sh contenant :
      echo Bonjour
    • Exécutez le fichier :
      ./exercice1.sh
      • Que se passe-t-il ? Pourquoi parfois ça ne marche pas directement ?
  3. Modifiez les permissions :

    chmod 777 exercice1.sh
    • À quoi sert chmod ?
    • Que signifient les chiffres (ex. 7 pour l’utilisateur, 7 pour le groupe, 7 pour les autres) ?

🧠 Focus : Comprendre Docker

Avant d'aller plus loin, prenons un instant pour comprendre ce qu'est Docker, son origine et les notions essentielles autour des conteneurs.

  • Docker a été créé en 2013. Il est écrit en Go, distribué sous licence Apache 2.0 et aussi sous licence propriétaire.
  • Docker était basé sur la technologie LXC (Linux Container), maintenant sur runc, qui permet d’isoler des processus via des conteneurs.

Conteneur ≠ Machine virtuelle

  • Un conteneur partage le noyau (kernel) du système hôte. Il est plus léger, rapide à lancer, et consomme peu de ressources.
  • Une machine virtuelle embarque un OS complet avec son propre noyau, ce qui la rend plus lourde.

Pour la culture

Le mot "docker" vient du métier de débardeur, un ouvrier qui s'occupe du chargement/déchargement de conteneurs dans un port.
L’analogie est directe : Docker manipule aussi des conteneurs.


Concepts essentiels

  • Dockerfile : un plan pour construire une image Docker.
    • Chaque ligne du Dockerfile correspond à une étape de compilation intermédiaire.
  • Image : équivalent d’une classe en programmation. Elle est figée, prête à être instanciée.
  • Container : une instance d’une image. C’est ce qui tourne réellement.
Dockerfile ≠ Image ≠ Container

Exercices

1) Échauffement

  • Écrivez un script exercice2.sh qui affiche 5 mots (ex. "J'aime", "les", "cours", "d'administration", "système"), chacun sur une ligne séparée (faire des sauts de lignes).
  • Essayez de le faire en une ligne de script.

Indice : Vous pouvez utiliser plusieurs commandes echo ou un seul echo.

2) Tests sur des fichiers

  • Écrivez un script exercice3.sh qui demande à l’utilisateur le nom d’un fichier ou d’un dossier.
  • Le script doit indiquer s’il s’agit d’un fichier ou d’un répertoire.
  • Ensuite, il doit exécuter ls -l dessus pour lister son contenu en mode détaillé.

Indice :

[[ -f /etc/passwd ]] && echo "This file exists!"
  • -f teste si c’est un fichier.
  • -d teste si c’est un dossier.

Premiers pas avec Docker

Découverte de Docker

  1. Installation / Accès :

    • Si vous travaillez en local, vérifiez que Docker est installé (docker version).
    • Sinon, lancez une instance sur Play with Docker.
  2. Commande test :

    docker run hello-world
    • Que se passe-t-il ? Quelles étapes se produisent en arrière-plan ?
  3. Lister les conteneurs et images :

    • docker ps, docker ps -a
    • docker images
  4. Exercice rapide :

    • Lancez un conteneur Nginx sur le port 8080 :
      docker run --name web -p 8080:80 nginx
    • Ou en mode détaché :
      docker run -d --name web -p 8080:80 nginx
    • Ouvrez votre navigateur (ou l’URL fournie par Play with Docker), vérifiez que ça fonctionne.
    • Explorez (docker logs web, docker exec -it web bash).
    • Stoppez et supprimez le conteneur (docker stop web, docker rm web).

Évaluation / Questions rapides

  1. Quelle est la différence entre un conteneur et une machine virtuelle ?
  2. À quoi sert la commande docker run ?
  3. Quel est l’avantage principal de la conteneurisation pour le déploiement d’applications ?

Conclusion

  • Vous avez découvert ou révisé les commandes Linux de base (navigation, édition, droits).
  • Vous avez compris les grands principes de la conteneurisation vs la virtualisation.
  • Vous avez lancé vos premiers conteneurs Docker (hello-world, nginx).

Prochaine étape : création de vos propres images (Dockerfile), gestion de volumes et réseaux, orchestrations simples, etc.

Bon courage !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment