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, Maryem Bouzouita, Hamdi Gabsi
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 : 06/04/2022 Heure 11hh45 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 : QCM (8 points)
1. Quelle est la commande docker pour trouver le pilote de journalisation actuel pour un
conteneur en cours d'exécution ?
A. docker info
B. docker config
C. docker stats
D. docker inspect
2. Qu'est-ce qui est utilisé par le noyau pour isoler les ressources lors de l'exécution de
conteneurs Docker ?
A. Control groups (also know as cgroups)
B. Volumes
C. Overlay networks
D. Namespaces
3. Quelle affirmation est vraie ?
A. ENTRYPOINT ne peut pas être utilisé conjointement avec CMD
B. Le format shell CMD utilise cette forme ["param", param", "param"]
C. ENTRYPOINT ne peut pas être remplacé dans la commande "docker container run"
D. CMD est utilisé pour exécuter le logiciel est l'image avec tous les arguments
1
Ne rien écrire ici
4. Dans un conteneur, le noyau de l’OS est :
A. Celui du système hôte
B. Celui qui est installé dans le conteneur
C. Celui qui est installé dans la première couche du conteneur
D. Celui du système qui exécute la commande docker
5. Après avoir créé un nouveau service nommé "http", vous remarquez que le nouveau service
n'est pas enregistré comme sain. Comment afficher la liste des tâches historiques pour ce
service à l'aide de la ligne de commande?
A. docker inspect http
B. docker service inspect http
C. docker service ps http
D. docker ps http
6. Un conteneur nommé "webserver1" qui stocke les résultats dans un volume appelé "data" a
été créé. docker run -d --name=webserver1 -v data:/data app1
Comment accède-t-on aux résultats dans "data" avec un autre conteneur appelé
"webserver2" ?
A. docker run -d --name=webserver2--volume=app1 app2
B. docker run -d --name=webserver2--volume=data app2
C. docker run -d --name=webserver2 --volumes-from=analytics app2
D. docker run -d --name=webserver2--mount=app1 app2
7. Laquelle des commandes suivantes répertorie les nœuds d'un cluster Docker Swarm ?
A. docker-swarm listnodes
B. docker node ls
C. docker machine ls
D. docker swarm nodes
8. Quelle commande Docker est utilisée pour initialiser un Swarm ?
A. docker swarm start
B. Docker swarm create
C. docker swarm init
D. docker swarm initialize
2
Ne rien écrire ici
9. Vous venez d'exécuter 'docker swarm leave' sur un nœud. Quelle commande peut être
exécutée sur le même nœud pour confirmer qu'il a quitté le cluster ?
A. docker node ls
B. docker system info
C. docker system status
D. docker system status
10. Quel fichier est utilisé pour docker-compose up ?
A. [Link]
B. [Link]
C. dockerfile
D. [Link]
11. Quelle est la commande docker-compose pour redémarrer votre pile d’exécution ?
A. docker-compose restart
B. docker-compose up -d
C. docker-compose update
D. docker-compose –restart
12. Si on veut mettre à l'échelle mes conteneurs de chrome à 10, quelle commande sera utilisée ?
A. $ docker-compose scale chrome=10
B. $ docker-compose up -d --scale chrome=10
C. $ docker-compose chrome=10
D. $ docker-compose up chrome=10
13. La commande docker service scale test=6 permet de:
A. Créer 6 services
B. Créer 6 noeuds
C. Créer 6 conteneurs
D. Supprimer 6 conteneurs
3
Ne rien écrire ici
14. La commande “docker commit 567 myproject” permet de :
A. Créer un conteneur nommé myproject à partir de l’image ayant l’ID 567
B. Créer un conteneur nommé 567 à partir de l’image ayant l’ID myproject
C. Créer une nouvelle image nommée myproject à partir d’un conteneur ayant l’ID 567
D. Créer une nouvelle image nommée 567 à partir d’un conteneur ayant l’ID myproject
15. La commande suivante « Docker run -v /data:/test alpine » permet d’instancier une image
alpine et lui rattacher :
A. Bind mount
B. Volume
C. Image
D. Driver réseau
16. La commande suivante « Docker run -v /data alpine » permet d’instancier une image
alpine et lui rattacher :
A. Bind mount
B. Named Volume
C. Anonymous Volume
D. Driver réseau
Question Reponses
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Q12
Q13
Q14
Q15
Q16
4
ETUDIANT(e)
Nom et Prénom : …………………………………………………... Code :
Classe : …………………………………………………....................
Exercice 2 (Étude de cas) (12 points)
Soit la figure ci-dessous qui décrit l’architecture d’une application web composée d’une
base de données MySQL, d’un serveur apache et d’une application web de gestion pour la base
de données MySQL.
On souhaite, en premier lieu, créer séparément des conteneurs Docker pour chaque
composant de notre application.
1. Préciser les commandes docker permettant la création de:
a. Un conteneur Docker nommé projet-mysql pour la base de données en considérant
l’image mariadb:latest. Ce conteneur sera exécuté en mode détaché(background).
(1pt)
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
b. Un conteneur Docker nommé projet-phpmyadmin pour l’application de gestion de
la base en considérant l’image phpmyadmin. Ce conteneur sera exécuté en mode
interactif et avec terminal. On souhaite associer le port 8080 de notre machine hôte
au port 80 de ce conteneur. (1pt)
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
5
ETUDIANT(e)
Nom et Prénom : …………………………………………………... Code :
Classe : …………………………………………………....................
c. Un conteneur Docker nommé projet-php-apache pour le serveur web en
considérant l’image php7.4-apache:projet. Ce conteneur sera exécuté en
mode interactif avec terminal. (1pt)
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
2. L’image php7.4-apache:projet a été créée à partir d’un Dockerfile. Donner les lignes du
fichier Dockerfile qui permettent de: (1.5pt)
• Introduire l’image de base qui est php:7.4-apache
• Faire une mise à jour système
• Installer les outils zip, unzip et vim
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
3. On souhaite stocker les données traitées par le conteneur projet-mysql d’une façon
permanente sur notre machine hôte dans un répertoire nommé “data” qui sera géré par le
Docker engine.
a. Modifier la commande Docker de la question 1 pour que le conteneur projet-
mysql puisse stocker ses données dans le répertoire “data”. (1pt)
......................................................................................................................................................
......................................................................................................................................................
....................................................................................................................................................
b. On veut partager les données contenues dans le répertoire “data” avec le conteneur
projet-phpmyadmin. Modifier la commande Docker de la question 1 pour que le
conteneur projet-phpmyadmin puisse partager ses données avec le conteneur projet-
mysql. (1pt)
......................................................................................................................................................
......................................................................................................................................................
....................................................................................................................................................
4. Donner la commande Docker qui permet de lier les deux conteneurs projet-mysql et
projet-phpmyadmin pour partager leurs variables d’environnement. (1pt)
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
6
ETUDIANT(e)
Nom et Prénom : …………………………………………………... Code :
Classe : …………………………………………………....................
5. On a constaté que la gestion manuelle et indépendante de ces conteneurs composant la même
application paraît fastidieuse
a. Expliquer pourquoi. (0.5 pt)
......................................................................................................................................................
......................................................................................................................................................
b. Proposer la solution Docker permettant de remédier à cela. (0.5pt)
......................................................................................................................................................
......................................................................................................................................................
6. Soit le fichier yml suivant, permettant de décrire l’architecture de notre application.
a. Remplir les champs manquants (3pt)
b. Préciser la commande Docker qui permet de créer cette architecture en utilisant ce
fichier. (0.5pt)
......................................................................................................................................................
......................................................................................................................................................
7. On souhaite déployer notre application sur plusieurs machines distinctes. Est ce qu’on peut
adopter la solution mentionnée dans la question 3. Sinon, proposer la solution adéquate.
(1pt)
.............................................................................................................................................................
.............................................................................................................................................................
7
8