T206 ‐ Administration système et réseaux II (Pratique) - Nini1551/EPHEC_Syntheses GitHub Wiki

TP1

1. Premier container

1.1 Hello World

docker run hello-world

  • Pouvez-vous expliquer avec vos mots ce qui s’est passé suite à l’exécution de cette commande?
    La commande essaye de lancer un container sur base de l'image 'hello-world' sur le repository Docker. Puisque celui-ci n'existe pas, il est créé.

1.2 Observer un container

docker container ls -a

  • Retrouvez les informations suivantes sur le container lancé précédemment :
    • Quel est son identifiant ? 3bcfedc38ab5
    • Quel est son nom ? competent_mestorf
    • Quel est son état ? Exited (0)
    • Quel est le nom de son image? Avez-vous vu au point 1.1. d’‘où cette image provenait? hello-world. Elle provient du repository Docker.
    • Quelle commande le container a-t-il exécuté? /hello
  • Si vous avez installer Docker Desktop, pouvez-vous retrouver ces mêmes informations dans l’interface graphique? Oui, elles peuvent tout être retrouvées avec d'autres.

1.3 Les images

docker images ls

  • Quelles informations voyez-vous? Quel est le lien avec ce que vous avez observé auparavant? La liste des images téléchargées. Il s'agit de la base utilisée par le container pour se lancer.
  • Comparez l’output de cette commande avec la vue correspondante de l’interface graphique. On y voit l'image hello-world (son nom, son tag, son id, quand elle a été créée, sa taille)
  • 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! docker images rm <nom/id> / docker rmi <nom/id> Il faut d'abord supprimer les containers qui se base sur l'image qu'on souhaite supprimer.

2. Utiliser un container

2.1 Interagir avec un container

docker run -it ubuntu bash

  • A quoi servent les options i et t dans la commande ci-dessus? Elles permettent d'afficher et d'interagir avec le shell émuler.
  • Chaque container Docker est destiné à exécuter une commande unique. Quelle est-elle dans ce cas-ci? Elle exécute la commande 'bash'
  • Dans le container, quels sont les processus présents? Et leurs PIDs? _ 1 bash_ 11 ps
  • Avec quel utilisateur êtes-vous loggé? root
  • Votre container a-t’il accès à Internet? Qui est son résolveur? Il a accès à Internet. Le résolveur est 192.168.65.7.

2.2 Inspecter un container

  • Chaque container dispose d’une interface réseau. Quelle est l’adresse IP de l’interface de votre container? 172.17.0.1
  • Votre container a-t’il des ports ouverts? Non ('HostConfig': {"PortBindings": {}})

2.3. Faire tourner un service dans un container

docker run -p80:80 --name=mon-serveur-web nginx

  • Examinez à présent le container ainsi lancé, soit depuis l’interface graphique, soit depuis la console. Que voyez-vous, au niveau des “ports” ? Pas de ports ouverts
  • Analysez le container et comparez les informations relatives aux ports ouverts avec celles obtenues deux étapes plus tôt. Quelle est la différence ? Ici, le port 80 est ouvert en tcp.

3. Construire des images

3.1. Figer un container

docker exec -it <nom-du-container> /bin/bash Modifier /usr/share/nginx/html/index.html

Pour sauvegarder l'image :
docker container commit <nom-du-container> <nom-image>

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

Dockerfile configuration : FROM nginx:latest RUN apt update RUN apt install -y nano net-tools COPY index.html /usr/share/nginx/html

index.html : page d'accueil personnalisée du site

docker build -t <nom de l'image> dans le répertoire pour créer une nouvelle image sur base de l'image nginx

4. Exercices récapitulatifs

4.1. Démarrer un serveur Web Apache

  • Trouvez une image Apache sur le Docker Hub httpd
  • Démarrez un container sur base de cette image et vérifiez qu’il fonctionne sur localhost via votre navigateur. /usr/local/apache2/htdocs/index.html
  • Créez un second virtualhost sur le port 8080. docker run -p80:80 -p8080:8080 --name=mon-apache httpd A CORRIGER / NE MARCHE PAS
  • Personnalisez la page d’accueil des deux virtual hosts.
  • Créez un Dockerfile permettant d’obtenir une image avec votre configuration Apache personnalisée.

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

A COMPLETER

4.3. Container avec script Python

Placer le Dockerfile dans le même répertoire que le script (qui sera appelé script.py).

Dockerfile :
FROM python:latest
COPY script.py /usr/src/app/script.py
CMD ["python", "/usr/src/app/script.py"]

⚠️ **GitHub.com Fallback** ⚠️