TP1 - DeumeniDerval/admin-2 GitHub Wiki

Noms des auteurs : DEUMENI TCHAMENI DERVAL

1. Premier container

1.1. Hello World

Pouvez-vous expliquer avec vos mots ce qui s'est passé suite à l'exécution de cette commande?

  1. Docker a tenté de trouver l'image hello-world:latest en local, mais ne l'a pas trouvée.
  2. Il a alors téléchargé l'image hello-world depuis Docker Hub (mentionné à l'étape 1.1).
  3. Ensuite, Docker a créé un container à partir de cette image.
  4. Ce container a exécuté un programme qui affiche un message de confirmation, puis il s'est arrêté immédiatement après son exécution image

1.2. Observer un container

apres avoir exécuté la commande docker container ls -a on peut voir les détails du container

  • Identifiant du container : 0aca120adcd6
  • Nom du container : thirsty_lamport
  • État du container : Exited (0) 47 seconds ago (le container a terminé son exécution avec succès)
  • Nom de l’image utilisée : hello-world
  • Provenance de l’image : Docker Hub, comme mentionné dans le point 1.1.
  • Commande exécutée par le container : "/hello"

Peut-on retrouver ces informations dans Docker Desktop ?

Oui, si Docker Desktop est installé, vous pouvez retrouver ces informations dans l'interface graphique :

  1. Ouvrir Docker Desktop.
  2. Aller dans l’onglet "Containers" : Vous verrez la liste des containers créés.
  3. Chercher "hello-world" : Vous y verrez son ID, nom, statut ("Exited"), et l’image utilisée.
  4. Aller dans l’onglet "Images" : Vous verrez hello-world comme une image disponible en local.

1.3. Les images

  1. Quelles informations voyez-vous? Quel est le lien avec ce que vous avez observé auparavant? image

On voit les informations comme: -REPOSITORY : Nom de l’image -TAG : Version de l’image -IMAGE ID : Identifiant unique de l’image -CREATED : Date de création de l’image -SIZE : Taille de l’image en MB,GB et KB Après avoir exécuté la commande docker run hello-world, Docker a téléchargé l’image hello-world et on peut l'observer ici après avoir listé les images.

  1. Comparez l'output de cette commande avec la vue correspondante de l'interface graphique. image On constate que dans l'interface graphique on a les même informations que dans l'output da la commandes docker image ls On peut voir la liste des images disponibles, leur taille et leur date de création avec un bouton supprimer que l'on peut utiliser pour supprimer les images directement.

  2. Essayez de trouver la commande qui vous permettra de supprimer cette image. C'est une bonne idée de ne pas conserver les images non utilisées sur votre système de fichiers : même avec la mutualisation de couches, elles prennent de l'espace sur le disque!

image La commande docker rm <id_du_container> en supprimant les containers sur les quels les images sont basées cela supprime l'image.

on peut voir dans la capture ci-dessous que une des 2 images hello-world que j'avais a disparue image

2. Utiliser un container

2.1. Interagir avec un container

  1. A quoi servent les options i et tdans la commande ci-dessus?

Le i(interactif) sert a Garde l’entrée standard ouverte pour permettre l'interaction avec le conteneur. Le t(TTY) Alloue un terminal pseudo-TTY, ce qui rend l’affichage interactif et lisible.

les 2 servent a ouvrir un terminale interactif dans le container ubuntu. 2. Chaque container Docker est destiné à exécuter une commande unique. Quelle est-elle dans ce cas-ci? La commande unique ici est le bash comme on peut l'observer sur l'image en dessous image

  1. Dans le container, quels sont les processus présents? Et leurs PIDs? on a 2 processus présents bash qui a un PID 1 et ps qui a un PID 9 image

  2. Avec quel utilisateur êtes-vous loggé? Je suis loggé avec l'utilisateur root

  3. Votre container a-t'il accès à Internet? Qui est son résolveur? j'ai essayé de pinger google mais ca ne fonctionnait pas vu que l'outil ping n'était pas installé j'ai du faire une mise a jour avec la commande apt update && apt install utils-ping. avoir pingé google on voit que ca marche image son résolveur est nameserver 192.168.65.7

2.2. Inspecter un container

  1. Chaque container dispose d'une interface réseau. Quelle est l'adresse IP de l'interface de votre container? Dans la partie "NetworkSettings" on peut voir l'adresse ip de l'interface du container qui est 172.17.0.2

image

  1. Votre container a-t'il des ports ouverts?
    Le container n'a aucun port ouvert on peut le voir aussi dans la partie "NetworkSettings"

image

2.3. Faire tourner un service dans un container

  • Qu'avez-vous observé au niveau des "ports" ? Expliquez et illustrez votre réponse avec des screenshots. La commande docker run -p80:80 --name mon-serveur-web nginx a lancé le conteneur mon-serveur-web et a mappé le port 80 de mon serveur local au port 80 du container.

image

3. Construire des images

3.1. Figer un container

installation de nano après avoir lancé le terminal interacif

image

modification du fichier html

image

Résultat :

image

Image sur base de mon serveur

image

image Nouveau container sue base de l'image créée

Après avoir arrêté l'image mon-serveur-web j'ai crée un autre container sur base de l'image que j'ai crée

image

3.2. Créer une image sur base d'un Dockerfile

fichier Dockerfile et index.html crées en local image

Création de l'image image

On peut voir que l'image a bien été créé image

Exercices récapitulatifs

Documentez ici la réalisation des exercices, via des explications et des snapshots.

4.1. Démarrer un serveur Web Apache

Je démarre le container container_apache avec l'imaage apache en mappant son port 80 au port 80 du PC

image

On peut voir ici qu'il a bien été crée

image

je crée un répertoire site_2 pour l'autre site

image

Je crée le deuxième index.html avec la commande nano je mets un code html pour le 2eme site et j'afficher son contenu avec la commande cat

image

image

4.2. Lancer un résolveur Bind dans un container Docker

  1. Quelle configuration avez-vous effectuée au niveau des ports ?
  2. Qu'avez-vous observé dans la trace Wireshark qui prouve que la configuration est correcte? Illustrez avec un screenshot de la capture.

4.3. Container avec script Python