Institut Supérieur d’Informatique
Département génie télécommunication et réseaux (GTR)
Module : Cloud Computing & Virtualisation
Nombre de pages : 5
Groupes : M2 SIIoT
@mail :
Enseignant : Safa Réjichi [Link]@[Link]
Mini-projet
Objectifs :
Manipulation d’hyperviseur type 2 « VirtualBox »
Création d’un MV « Ubuntu 20 »
Préparation et installation de Docker sur la MV « Ubuntu 20 »
Création d’une stack LAMP au moyen de Docker.
Manipulation de Dockerfile
Manipulation de volumes
Appréhension de la notion de réseau avec docker
Manipulation de docker compose
Partie 1 : Manipulation d’hyperviseur type 2
I. Création, avec VirtualBox (hyperviseur type 2), d’une machine virtuelle. Suivez les étapes
suivantes :
1. Rendez-vous sur le site de Oracle Virtual Box afin de télécharger la dernière version
du logiciel : [Link]
2. Rendez-vous sur le site de Ubuntu afin de télécharger la dernière version de l’OS :
[Link]
3. Créez la machine virtuelle appelée Ubuntu 20 avec les paramètres suivants :
Nom de la machine Ubuntu 20
Mémoire RAM 2048 Mo
Disque dur 20 Go
Partie 2 : Configuration du dépôt officiel [Link] et installation de Docker
CE
I. Durant ce mini-projet, vous devez installer Docker Community Edition (docker-ce de
[Link]) sur la MV « Ubuntu 20 ».
1
Pour ce faire, vous allez ajouter une nouvelle source de paquets, ajouter la clé GPG de
Docker pour nous assurer que les téléchargements sont valables, puis nous installerons le
paquet.
La version communautaire Docker dispose de trois types de canaux de mise à
jour, stable, test et Nightly. Vous devez installer la version stable.
1. Tout d'abord, mettez à jour votre liste de packages existante :
sudo apt-get update
2. Ensuite, installez quelques paquets pré-requis permettant à APT d'utiliser un
serveur HTTPS de dépôt :
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
3. Ensuite, ajoutez la clé GPG du dépôt officiel de Docker à votre système :
curl -fsSL [Link] | sudo gpg --dearmor -o
/usr/share/keyrings/[Link]
GnuPG (ou GPG, de l'anglais GNU Privacy Guard) est l'implémentation GNU du standard
OpenPGP. Cette étape permet de gérer les clés dont se sert apt pour authentifier les paquets
téléchargés. Les paquets authentifiés par ces clés seront réputés fiables.
4. Finalement, pointez vers le dépôt de la version "stable" de Docker CE par :
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-
[Link]] [Link] \ $(lsb_release -cs) stable" | sudo
tee /etc/apt/[Link].d/[Link] > /dev/null
II. Installation de Docker CE et les paquets nécessaires.
1. Mettre à jour l'index APT :
sudo apt-get update
2. Installer la dernière version de Docker Engine et containerd :
sudo apt-get install docker-ce docker-ce-cli [Link]
3. Une fois votre installation finie, l'étape suivante est de vérifier que Docker CE est
correctement installé en vérifiant d'abord la version du moteur :
sudo docker --version
4. Maintenant il faut activer le service docker en tapant la commande suivante :
sudo systemctl start docker
III. Par défaut on ne peut lancer les commandes docker qu'avec l'utilisateur root et les
autres utilisateurs ne peuvent y accéder qu'en utilisant le sudo. Vous allez autoriser votre
compte utilisateur Ubuntu à lancer les commandes docker sans passer par le sudo :
1. On va commencer par créer notre groupe Unix « docker »
sudo groupadd docker
2. Puis on rajoute notre utilisateur au groupe docker
sudo usermod -aG docker $USER
3. Ensuite, déconnectez-vous et reconnectez-vous (si ça ne fonctionne pas alors il faut
redémarrer complètement votre machine) pour que votre appartenance au groupe soit
réévaluée.
4. Enfin, vérifiez que vous pouvez exécuter la commande docker suivante sans sudo :
2
docker –version
5. Pour finir nos tests de vérifications d'installation, lancez la commande suivante :
docker run hello-world
6. Expliquez ce que vous obtenez.
7. Visitez le site web ([Link] et affichez l’image officielle du système
d’exploitation Ubuntu.
8. Télécharger l’image Ubuntu 16.04 depuis le Docker hub Registry.
Partie 3 : Conteneurisation avec Docker
Pour s'exercer, nous allons créer notre propre stack LAMP (Linux Apache MySQL PHP) au
moyen de Docker. Voici les différentes couches de cette image :
Une couche OS pour exécuter notre Apache, MySQL et Php, nous allons nous baser
sur la distribution Debian ou bien Ubuntu (à vous de choisir).
Une couche Apache pour démarrer notre serveur web.
Une couche php qui contiendra un interpréteur Php mais aussi les bibliothèques qui
vont avec.
Une couche Mysql qui contiendra notre système de gestion de bases de données.
Voici le schéma de notre image :
Normalement pour faire les choses dans les règles de l'art, il faut séparer l'image de
l'application web par rapport à l'image de la base de données. Mais pour ce mini-projet,
nous allons faire une exception et nous allons mettre toute notre stack dans une seule
image.
1. Commencez par créer un dossier nommé votre nom1_nom2_M1SSII (selon le nombre de
votre équipe) et y mettre les sources de l'image, données en pièce-jointe.
2. Désarchivez le fichier zip, et mettez les dossiers suivants dans votre nouveau dossier :
db : contient un fichier [Link], qui renferme toute l'architecture de la base de
données.
3
app : comporte les sources php de notre l'application web.
3. Ensuite dans la racine du dossier que vous venez de créer, créez un fichier et nommez le
Dockerfile. Mettez les instructions nécessaires afin de créer la stack LAMP.
Voici l'architecture que vous êtes censé avoir :
├──sources
│ ├──app
│ │ ├── [Link]
│ │ ├── [Link]
│ │ └── [Link]
│ └── db
│ └── [Link]
└── Dockerfile
4. Construisez votre image que vous nommerez « my_lamp » avec la commande BUILD.
5. Lister les images Docker que vous avez sur votre MV.
6. Créez un volume nommé mysqldata avec la commande VOLUME.
7. Exécutez votre conteneur que vous nommerez « my_lamp_c » avec la commande RUN.
N’oubliez pas de lier le port 80 du conteneur au port 8080 de la machine hôte. N’oubliez
pas de lier le volume mysqldata au dossier /var/lib/mysql de votre conteneur.
8. Visitez ensuite la page suivante [Link] et affichez le résultat obtenu.
9. Ajoutez une ressource (Nouveau article) avec les informations suivantes :
10. Détruisez votre conteneur « my_lamp_c » et l’exécutez une autre fois.
11. Vérifiez l’existence de l’article déjà ajouté. Expliquez ?
12. Vérifiez qu'un réseau bridge est créé par défaut, plus précisément c'est l'interface
docker0 au niveau de la machine hôte.
13. Donnez l’adresse ip de la machine hôte et celle de votre conteneur et vérifiez qu’ils sont
bien sur le même réseau.
4
14. Installation de docker-compose : Docker Compose n'est pas installé par défaut et s'appuie
sur le moteur Docker pour fonctionner. Voici la procédure à suivre pour télécharger Docker
Compose sous un environnement Linux :
Tapez
sudo curl -L "[Link]
compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
ensuite,
sudo chmod +x /usr/local/bin/docker-compose
Puis,
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Vérifiez ensuite votre installation :
docker-compose --version
15. Commencez par créer un fichier dans le même dossier nom1_nom2_M1SSII et nommez
le [Link].
Voici à quoi doit ressembler votre arborescence :
├──sources
│ ├──app
│ │ ├── [Link]
│ │ ├── [Link]
│ │ └── [Link]
│ └── db
│ └── [Link]
├── [Link]
└── Dockerfile
16. Refaire la tâche décrite par la question 7 en recréant un conteneur que vous nommerez
« my_lamp_compose_c » en utilisant la même image « my_lamp » mais cette fois ci en
utilisant le fichier [Link]. N’oubliez pas de lier le port 80 du conteneur au
port 8081 de la machine hôte. N’oubliez pas de lier le volume mysqldata au dossier
/var/lib/mysql. Visitez ensuite la page [Link] et affichez le résultat