TP sysres IMA5sc 2018/2019 G3 : Différence entre versions

De Wiki d'activités IMA
Ligne 14 : Ligne 14 :
 
On associe un système de fichiers de type ext4 à notre fichier.
 
On associe un système de fichiers de type ext4 à notre fichier.
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
mkfs.ext4 /home/pifou/containers/container1
 
mkfs.ext4 /home/pifou/containers/container1
 
</div>
 
</div>
 +
<br/>
  
 
==Montage du système de fichiers==
 
==Montage du système de fichiers==
Ligne 22 : Ligne 24 :
 
On commence par créer les répertoires qui contiendront les ''rootfs'' montés. Dans un premier temps, on monte le système de fichiers précédemment créé dans /mnt/container1
 
On commence par créer les répertoires qui contiendront les ''rootfs'' montés. Dans un premier temps, on monte le système de fichiers précédemment créé dans /mnt/container1
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
mkdir /mnt/container1
 
mkdir /mnt/container1
Ligne 31 : Ligne 34 :
 
mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1
 
mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1
 
</div>
 
</div>
 +
<br/>
  
 
==Déploiement de l'arborescence Debian==
 
==Déploiement de l'arborescence Debian==
Ligne 36 : Ligne 40 :
 
Avant tout, on renseigne le proxy de l'école dans la variable d’environnement correspondante afin qu'on puisse télécharger les paquetages sur le mirroir devuan extérieur à l'école
 
Avant tout, on renseigne le proxy de l'école dans la variable d’environnement correspondante afin qu'on puisse télécharger les paquetages sur le mirroir devuan extérieur à l'école
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
export http_proxy=https://proxy.polytech-lille.fr:3128
 
export http_proxy=https://proxy.polytech-lille.fr:3128
 
</div>
 
</div>
 +
<br/>
  
 
Ensuite on utilise l'outil deboostrap dans /mnt/container1 pour créer un système Debian de base
 
Ensuite on utilise l'outil deboostrap dans /mnt/container1 pour créer un système Debian de base
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
debootstrap --include=vim,nano,apache2 stable /mnt/container1
 
debootstrap --include=vim,nano,apache2 stable /mnt/container1
 
</div>
 
</div>
 +
<br/>
  
 
Puis on renseigne le fichier fstab de notre container1, il s'agit du fichier qui indique comment les systèmes de fichiers doivent être montés
 
Puis on renseigne le fichier fstab de notre container1, il s'agit du fichier qui indique comment les systèmes de fichiers doivent être montés
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
echo "proc /proc proc defaults 0 0" >> /mnt/container1/etc/fstab
 
echo "proc /proc proc defaults 0 0" >> /mnt/container1/etc/fstab
 
</div>
 
</div>
 +
<br/>
  
 
Enfin, on peut démonter la partition  
 
Enfin, on peut démonter la partition  
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
umount /mnt/container1
 
umount /mnt/container1
 
</div>
 
</div>
 +
<br/>
  
 
Une fois que nous avons déployé tout ce dont nous avons besoin au sein du container1 il ne reste plus qu'à dupliquer ce fichier deux fois, et on aura trois partitions utilisables pour nos conteneurs
 
Une fois que nous avons déployé tout ce dont nous avons besoin au sein du container1 il ne reste plus qu'à dupliquer ce fichier deux fois, et on aura trois partitions utilisables pour nos conteneurs
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
cp /home/pifou/containers/container1 /home/pifou/containers/container2
 
cp /home/pifou/containers/container1 /home/pifou/containers/container2
Ligne 65 : Ligne 78 :
 
cp /home/pifou/containers/container1 /home/pifou/containers/container3
 
cp /home/pifou/containers/container1 /home/pifou/containers/container3
 
</div>
 
</div>
 +
<br/>
  
 
Ensuite on peut monter les trois systèmes de fichiers :
 
Ensuite on peut monter les trois systèmes de fichiers :
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1
 
mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1
Ligne 75 : Ligne 90 :
 
mount -t ext4 -o loop /home/pifou/containers/container3 /mnt/container3
 
mount -t ext4 -o loop /home/pifou/containers/container3 /mnt/container3
 
</div>
 
</div>
 +
<br/>
  
 
==Configuration des interfaces réseau==
 
==Configuration des interfaces réseau==
 +
 
Pour l'instant, on a tout ce qu'il faut pour lancer les conteneurs, seulement ils seraient bien inutiles s'ils ne pouvaient aucunement communiquer entre eux ou avec le système hôte. C'est pourquoi on va créer dans le système hôte 4 interfaces virtuelles pour les 3 conteneurs (un conteneur aura deux interfaces virtuelles dont l'une sera dans le bridge donnant accès à internet, il s’agira de notre conteneur qui agira comme serveur mandataire inverse). On va donc créer un commutateur virtuel dans lequel on mettra les trois interfaces virtuelles vif1, vif2 et vif3 de nos trois conteneurs.
 
Pour l'instant, on a tout ce qu'il faut pour lancer les conteneurs, seulement ils seraient bien inutiles s'ils ne pouvaient aucunement communiquer entre eux ou avec le système hôte. C'est pourquoi on va créer dans le système hôte 4 interfaces virtuelles pour les 3 conteneurs (un conteneur aura deux interfaces virtuelles dont l'une sera dans le bridge donnant accès à internet, il s’agira de notre conteneur qui agira comme serveur mandataire inverse). On va donc créer un commutateur virtuel dans lequel on mettra les trois interfaces virtuelles vif1, vif2 et vif3 de nos trois conteneurs.
  
 
===Création du bridge===
 
===Création du bridge===
 +
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
ip link add monpetitpont type bridge
 
ip link add monpetitpont type bridge
 
</div>
 
</div>
 +
<br/>
  
 
===Création des 4 interfaces virtuelles===
 
===Création des 4 interfaces virtuelles===
 +
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
ip link add vif1 type veth peer name eth0@vif1
 
ip link add vif1 type veth peer name eth0@vif1
Ligne 94 : Ligne 116 :
 
ip link add vif4 type veth peer name eth1@vif4
 
ip link add vif4 type veth peer name eth1@vif4
 
</div>
 
</div>
 +
<br/>
  
 
===Connexion des interfaces virtuelles aux commutateurs virtuels===
 
===Connexion des interfaces virtuelles aux commutateurs virtuels===
 +
 
vif1 vif2 et vif3 sont mises dans monpetitpont, tandis que vif4 est mise dans bridge
 
vif1 vif2 et vif3 sont mises dans monpetitpont, tandis que vif4 est mise dans bridge
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
ip link set vif1 master monpetitpont
 
ip link set vif1 master monpetitpont
Ligne 106 : Ligne 131 :
 
ip link set vif4 master bridge
 
ip link set vif4 master bridge
 
</div>
 
</div>
 +
<br/>
  
Il ne faut pas ommettre d'activer les interfaces, sans quoi la communication serait impossible
+
Il ne faut pas omettre d'activer les interfaces, sans quoi la communication serait impossible
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
ip link set vif1 up
 
ip link set vif1 up
Ligne 118 : Ligne 145 :
 
ip link set vif4 up
 
ip link set vif4 up
 
</div>
 
</div>
 +
<br/>
  
 
On pense à ajouter une adresse IP au commutateur virtuel, même si ce n'est pas obligatoire :
 
On pense à ajouter une adresse IP au commutateur virtuel, même si ce n'est pas obligatoire :
  
 +
<br/>
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Consolas">
 
ip a add dev monpetitpont 192.168.1.1/24
 
ip a add dev monpetitpont 192.168.1.1/24
Ligne 128 : Ligne 157 :
 
ip link set monpetitpont up
 
ip link set monpetitpont up
 
</div>
 
</div>
 +
<br/>

Version du 14 novembre 2018 à 16:16

Première séance

Création des fichiers disque des conteneurs

On crée un fichier de 10 Gio = 10 240 * 1 Mio dont tous les octets sont égales à 0.


dd if=/dev/zero of=/home/pifou/containers/container1 bs=1024k count=10240


Création du système de fichiers

On associe un système de fichiers de type ext4 à notre fichier.


mkfs.ext4 /home/pifou/containers/container1


Montage du système de fichiers

On commence par créer les répertoires qui contiendront les rootfs montés. Dans un premier temps, on monte le système de fichiers précédemment créé dans /mnt/container1


mkdir /mnt/container1

mkdir /mnt/container2

mkdir /mnt/container3

mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1


Déploiement de l'arborescence Debian

Avant tout, on renseigne le proxy de l'école dans la variable d’environnement correspondante afin qu'on puisse télécharger les paquetages sur le mirroir devuan extérieur à l'école



Ensuite on utilise l'outil deboostrap dans /mnt/container1 pour créer un système Debian de base


debootstrap --include=vim,nano,apache2 stable /mnt/container1


Puis on renseigne le fichier fstab de notre container1, il s'agit du fichier qui indique comment les systèmes de fichiers doivent être montés


echo "proc /proc proc defaults 0 0" >> /mnt/container1/etc/fstab


Enfin, on peut démonter la partition


umount /mnt/container1


Une fois que nous avons déployé tout ce dont nous avons besoin au sein du container1 il ne reste plus qu'à dupliquer ce fichier deux fois, et on aura trois partitions utilisables pour nos conteneurs


cp /home/pifou/containers/container1 /home/pifou/containers/container2

cp /home/pifou/containers/container1 /home/pifou/containers/container3


Ensuite on peut monter les trois systèmes de fichiers :


mount -t ext4 -o loop /home/pifou/containers/container1 /mnt/container1

mount -t ext4 -o loop /home/pifou/containers/container2 /mnt/container2

mount -t ext4 -o loop /home/pifou/containers/container3 /mnt/container3


Configuration des interfaces réseau

Pour l'instant, on a tout ce qu'il faut pour lancer les conteneurs, seulement ils seraient bien inutiles s'ils ne pouvaient aucunement communiquer entre eux ou avec le système hôte. C'est pourquoi on va créer dans le système hôte 4 interfaces virtuelles pour les 3 conteneurs (un conteneur aura deux interfaces virtuelles dont l'une sera dans le bridge donnant accès à internet, il s’agira de notre conteneur qui agira comme serveur mandataire inverse). On va donc créer un commutateur virtuel dans lequel on mettra les trois interfaces virtuelles vif1, vif2 et vif3 de nos trois conteneurs.

Création du bridge


ip link add monpetitpont type bridge


Création des 4 interfaces virtuelles


ip link add vif1 type veth peer name eth0@vif1

ip link add vif2 type veth peer name eth0@vif2

ip link add vif3 type veth peer name eth0@vif3

ip link add vif4 type veth peer name eth1@vif4


Connexion des interfaces virtuelles aux commutateurs virtuels

vif1 vif2 et vif3 sont mises dans monpetitpont, tandis que vif4 est mise dans bridge

ip link set vif1 master monpetitpont

ip link set vif2 master monpetitpont

ip link set vif3 master monpetitpont

ip link set vif4 master bridge


Il ne faut pas omettre d'activer les interfaces, sans quoi la communication serait impossible


ip link set vif1 up

ip link set vif2 up

ip link set vif3 up

ip link set vif4 up


On pense à ajouter une adresse IP au commutateur virtuel, même si ce n'est pas obligatoire :


ip a add dev monpetitpont 192.168.1.1/24

ip link set monpetitpont down

ip link set monpetitpont up