Examen
Semestre : 1 2
Session : Principale Rattrapage
ETUDIANT(e)
Code :
Nom et Prénom : …………………………………………………...
Classe : …………………………………………………....................
Module : Techniques de conteneurisation
Enseignant(s) : Imed Khedhri, Marwa Chemakh, Hamdi Gabsi, Mariem Bouzouita
Classe(s): 4 ArcTic & 4IoSyS
Documents autorisés : OUI NON Nombre de pages : 7
Calculatrice autorisée : OUI NON Internet autorisée : OUI NON
Date : 05/04/2022 Heure 13hh45 Durée : 01h30
**
Note Nom et Signature Nom et Signature Observations
Code du Surveillant du Correcteur
/20
NB : Les parties réservées aux informations relatives à l’étudiant et à l’administration seront
ajoutées au cas où les réponses seront écrites sur les feuilles d’examen.
La précision, la consistance, la clarté seront appréciées
Exercice 1 : Questions de réflexion (10 points)
1. Expliquer le principe de Namspaces et cgroups.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
2. Expliquer l’architecture du projet Docker.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
3. Définir les types des nœuds dans un cluster Docker Swarm.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
1
Ne rien écrire ici
4. On souhaite créer une image docker à partir de l’image node:17-alpine, son répertoire de
travail est /app tout en copiant les fichiers d’extension .json dans le répertoire courant.
Donner le fichier Dockerfile correspondant.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
5. Pour créer une image, on peut utiliser la commande docker commit ou la commande docker
build. Expliquer la différence.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
6. On vient de créer deux conteneurs « c1 » et « c2 » comme indiqué ci-dessous :
Serait-il possible de communiquer entre eux? Justifier votre réponse.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
7. Citer les différentes méthodes utilisées par Docker pour rendre les données d’un conteneur
persistantes.
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
8. Dans un docker Swarm, quelle est la différence entre un service et un conteneur?
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
9. Soit la commande ci-dessous:
Quel est le rôle de cette commande ?
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
2
10. Quelle est la différence entre les instructions CMD et ENTRYPOINT dans un fichier
Dockerfile ?
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
Exercice 2 : Étude de cas (10 points)
Votre société vous a demandé de lancer une application multi-conteneurs selon le schema
suivant:
Vous avez commencé par créer le réseau qui va mettre en liaison les 2 conteneurs comme suit:
$ docker network create my-net
Ensuite vous avez démarré les deux conteneurs, avec la syntaxe suivante :
Le conteneur “MySQL”:
docker run -d
--network my-net --network-alias mysql
-v todo-mysql-data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=<your-password>
-e MYSQL_DATABASE=todos
mysql:5.7
Le conteneur “application”:
docker run -dp 3000:3000
-w /app -v ${PWD}:/app
--network my-net
-e MYSQL_HOST=mysql
-e MYSQL_USER=root
-e MYSQL_PASSWORD=<your-password>
-e MYSQL_DB=todos
node:12-alpine
sh -c "yarn install && yarn run dev"
Les 2 conteneurs démarrent avec succès et vous avez vérifié avec l'url:http://localhost:3000,
sauf que le responsable IT vous demande de définir une pile d'applications dans un fichier et le
conserver.
1. Donnez les raisons de cette demande, et quel outil vous devez adopter (pts) :
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
3
2. Soit le fichier yml suivant, permettant de décrire l’architecture de cette pile
d’applications. En se basant sur les commandes que vous avez tapés précédemment,
remplissez les champs manquants (pts)
version: "3.7"
services:
my-app:
image:...................................
command:.................................
ports:
- ........ : .........
working_dir: ..........................
volumes:
- ........ : ........
environment:
MYSQL_HOST: ...........................
.......................................................
.......................................................
.......................................................
mysql:
image:..........................
volumes:
-.......... : ...........................
environment:
MYSQL_ROOT_PASSWORD: ...................
MYSQL_DATABASE: ........................
volumes:
.........................................
3. Quelle est la commande qui permet de démarrer cette pile d’applications en utilisant
ce fichier? (pts)
.......................................................................................................................................................
.......................................................................................................................................................
4. On vous demande de faire la mise en échelle du service mysql en nombre de réplicas de
5 quelle commande vous appliquez (pts).
5. Après ce travail, le responsable IT vous demande de passer à une solution d'autoscaling,
vu la demande énorme pour cette l'application, quelle outil vous proposez ? (pts).
6. Comment vous vous procédez pour la mise du cluster, et quelle sont les commandes
appropriés à utiliser (pts):
4
Comment ajouter un nouveau worker et un nouveau manager
docker swarm join --token SWMTKN-1-2knekzri22n085la70lfu9jh3w498jf9x3shpcadrw8hnkxpqs-
b2fgcpk7fs2058mx2f6szvrxm 192.168.0.13:2377
docker swarm join --token SWMTKN-1-2knekzri22n085la70lfu9jh3w498jf9x3shpcadrw8hnkxpqs-
1ugenzx94grajnuf4l91yp3nv 192.168.0.13:2377
Combien de nœuds managers ? quelle est la différence entre un manager et un leader ?
On a supprimé le manager 3. Que se passe-t-il ?
5
ETUDIANT(e)
Nom et Prénom : …………………………………………………... Code :
Classe : …………………………………………………....................