Skip to content
ZosiscoIV edited this page Apr 18, 2025 · 1 revision

TP2 : Suite de la découverte de Docker

Noms des auteurs : BONTEMS Antoine, SCHOONYANS Ann-Lore, LAMAND Cyril Date de réalisation : 14/02/2025

1. Les volumes Docker

Documentez les commandes importantes de cette section.

docker run -p 80:80
--name web \ --mount type=bind,source="$(pwd)"/html,target=/usr/share/nginx/html/ \ custom-nginx
Cette commande crée le container en Bind Mount à partir de l'image custom-nginx. On sait donc accéder au serveur web sur le port 80.

docker run -p 80:80
--name web-volume
--mount source=mon-volume,target=/usr/share/nginx/html/
custom-nginx
Cette commande utilise le volume Docker pour créer le container à partir de l'image custom-nginx. Le container redirige toute les requêtes du port 80 vers son port 80.

Quelles sont les différences entre les deux types de volumes utilisés ici ? Dans quel cas utiliser l'un plutôt que l'autre?

Les Bind Mounts utilisent un chemin du système de fichiers hôte directement et on l'utilise pour le partage de données avec l’hôte, pour le développement et lorsqu’on est certain que le chemin du répertoire partagé de l’hôte existera toujours. Les Volumes Docker sont des espaces de stockage gérés par Docker et n'est pas destiné à être atteint par l'hôte. On l'utilise pour partager les données entre différents containers et lorsque les données doivent être stockée à distance.

2. Les réseaux Docker

2.1. Réseau par défaut

  1. Quelles sont les interfaces réseau et adresses IP de chaque container? Vous pouvez trouvez cette information soit depuis l'hôte avec un docker inspect(cfr TP1), soit depuis le container lui-même. Note dans ce dernier cas : Si la commande ip addrn'est pas disponible, installez le package iproute2.
    image
    L'adresse ip du premier container est 172.17.0.2 et le deuxième, c'est 172.17.0.3.

  2. Les containers peuvent-ils se joindre via ping ?
    Oui, ils savent se joindre l'un l'autre.
    image

  3. Les containers ont-ils accès à Internet ?
    Oui, ils y ont accès.
    image

  4. Est-ce une bonne idée d'utiliser ce réseau par défaut? Quels en sont les avantages et les inconvénients ?
    Le réseau bridge est bien pour des réseaux simples mais si l'on de la sécurité il vaut mieux pas l'utiliser vu qu'il peut y avoir d'autres containers dessus. Il est facile à mettre en place, les containers peuvent communiquer entre eux grâce à leur adresse IP et les containers ne sont accessible de l'extérieur. Par contre, il a de moins bonne performances lorsque les réseaux deviennent plus complexes et il n'est pas sécurisé.

2.2. Réseaux définis par l'utilisateur

  1. Le nouveau container ajouté sur le réseau my-net peut-il contacter les deux précédents (liés au réseau bridge par défaut)? A-t-il accès à Internet?
    Non, il ne peut pas contacter les deux autres containers parce que les deux réseaux sont distincts. Le nouveau réseau a bien accès à internet.
    image

  2. Quels sont les différences entre ce nouveau réseau et le bridge par défaut? Quels en sont les avantages et inconvénients ?
    Les différences sont que sur le réseau bridge, les containers partagent tous le même réseau et celui personnalisé est isolé de tous les autres réseaux. Grâce au réseau personnalisé, on peut faire des résolution DNS et il est plus adapté aux configurations complexes.

3. Docker-compose

  1. Qu'avez-vous observé lors de cette première expérience avec Docker Compose ? Faites un court bilan sur base de screenshots.
  2. Documentez les commandes importantes.
    image image
    On voit que les deux containers sont bien en cours d'exécution.
    image
    On voit que le volume a bien été créer ainsi que le réseau personnalisé.
    image
    Mes deux serveurs fonctionnent tous les deux correctement sur leur port (80 et 81).
    image
    Si l'on modifier la page HTML, les deux serveurs donnent correctement la nouvelle page
    image
    On arrive bien à les pinger avec leur nom.
    image

4. Exercices récapitulatifs

4.1. Mise en application simple

Votre infrastructure est-elle conforme à ce qui était attendu? Comment avez-vous pu la valider? Donnez les commandes utilisées et illustrez le résultat par des screenshots.
C'est la config du docker-compose. Après on voit bien que chaque container à son bon volume et son bon réseau associé. On peut voir aussi que sur le web, il trois pages différentes en fonction du container lié au port choisit.

image image image image image

4.2. Exemple du cours théorique

  1. Dans cette infrastructure, comment les données sont-elles partagées? Via des Bind Mounts ou des Volumes? Pourquoi ?
    Le web utilise le Bind Mouts et la base de donnée les Volumes. Pour la DB, on a choisi les Volumes car les données doivent toujours exister même si le container est supprimer. Et le Bind Mount a été choisit pour le web car il permet de modifier directement les fichiers sur l’hôte et de voir les changements directement dans le container.
  2. Quels sont les spécificités de chaque container?
    Pour le web, c'est le port 3000 de l'hôte qui est redirigé vers le port 80 du container et il donne le contenu en local. La DB utilise le Volume pour garder les données.ec
  3. Une fois démarrée, l'infrastructure est-elle conforme à ce qui était attendu? Comment avez-vous pu la valider? Donnez les commandes utilisées et illustrez le résultat par des screenshots.
    Oui, cela fonctionne correctement. L'infrastructure utilise correctement les Bind Mounts et les Volumes Docker pour répondre aux besoins spécifiques des services. Le réseau personnalisé permet une communication entre les containers.
    image image image image

4.3. Exemple du tutoriel Docker

  1. Quelles sont vos observations suite à la réalisation de ce tutoriel ?
    Le fichier compose crée deux containers le web et redis. Le web utilise une image à partir du Dockerfile présent et lie le port 5000 du conteneur et la machine hôte au port 8000. Le redis utilise une image prise du registre Docker Hub.
  2. Sur quelle base les containers sont-ils lancés ?
    Ils sont sur Compose et après sur Compose Watch. Le web crée son image à l'aide du Dockerfile défini et le redis à partir d'un image téléchargée du Docker Hub.
  3. Qu'avez-vous appris de nouveau ?
    Le Compose Watch qui permet à chaque fois qu'un fichier est modifié, Compose synchronise le fichier avec l'emplacement donné dans le conteneur. L'application en cours d'exécution se mettra à jour sans redémarrage.

Clone this wiki locally