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

De Wiki d'activités IMA
(Première séance)
Ligne 22 : Ligne 22 :
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 
mkdir /mnt/container1
 
mkdir /mnt/container1
 +
mkdir /mnt/container2
 +
mkdir /mnt/container3
 
mount -t ext4 -o loop /mnt/container1
 
mount -t ext4 -o loop /mnt/container1
 
</div>
 
</div>
Ligne 36 : Ligne 38 :
  
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
export http_proxy=https://proxy.polytech-lille.fr:3128
+
debootstrap --include=vim,nano,apache2 stable /mnt/container1
 +
</div>
 +
 
 +
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ées
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab
 +
</div>
 +
 
 +
 
 +
Enfin, on peut démonter la partition
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
umount /tmp/fs1
 +
</div>
 +
 
 +
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
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
cp /home/pifou/containers/container1 /home/pifou/containers/container2
 +
cp /home/pifou/containers/container1 /home/pifou/containers/container3
 +
</div>
 +
 
 +
Ensuite on peut monter les trois systèmes de fichiers :
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
mount -t ext4 -o loop /mnt/container1
 +
mount -t ext4 -o loop /mnt/container2
 +
mount -t ext4 -o loop /mnt/container3
 +
</div>
 +
 
 +
==Configuration des interfaces réseau==
 +
Pour l'instant, on a tout ce qu'il faut pour lancer les conteneurs, seulement il seraient bien inutiles s'ils ne pouvaient aucunement communiquer entre eux ou avec le système hôte. Ainsi on va creer 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'agirat de notre conteneur mandataire inverse). On va donc creer un commutateur virtuel dans lequel on mettra les trois interfaces virtuelles eth0 de nos trois conteneurs.
 +
 
 +
===Création du bridge===
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
ip link add monpetitpont type bridge
 +
</div>
 +
 
 +
===Création des 4 interfaces virtuelles===
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
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
 +
</div>
 +
 
 +
===Connexion des interfaces virtuelles aux commutateurs virtuels===
 +
Vif1 vif2 et vif3 sont mises dans monpetitpont, tandis que vif4 est mise dans bridge
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
ip link set vif1 master monpetitpont
 +
ip link set vif2 master monpetitpont
 +
ip link set vif3 master monpetitpont
 +
ip link set vif4 master bridge
 +
</div>
 +
 
 +
Il ne faut pas ommettre d'activer les interfaces, sans quoi la communication sera impossible
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
ip link set vif1 up
 +
ip link set vif2 up
 +
ip link set vif3 up
 +
ip link set vif4 up
 +
</div>
 +
 
 +
On pense à ajouter une adresse ip au commutateur virtuel, même si ce n'est pas obligatoire :
 +
 
 +
<div style="padding:15px;color:#ffffff;background-color:#23241F;font-family:Inconsolata">
 +
ip a add dev monpetitpont 192.168.1.1/24
 +
ip link set monpetitpont down
 +
ip link set monpetitpont up
 
</div>
 
</div>

Version du 13 novembre 2018 à 10:06

Première séance

Création des fichiers disque des conteneurs

On crée un fichier de 10 Gio = 10 240 * 1 Mio.

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 monte le système de fichier précédemment crée dans /mnt/container1

mkdir /mnt/container1 mkdir /mnt/container2 mkdir /mnt/container3 mount -t ext4 -o loop /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

Puis on utilise deboostrap dans /mnt/container1

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ées

echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab


Enfin, on peut démonter la partition

umount /tmp/fs1

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 /mnt/container1 mount -t ext4 -o loop /mnt/container2 mount -t ext4 -o loop /mnt/container3

Configuration des interfaces réseau

Pour l'instant, on a tout ce qu'il faut pour lancer les conteneurs, seulement il seraient bien inutiles s'ils ne pouvaient aucunement communiquer entre eux ou avec le système hôte. Ainsi on va creer 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'agirat de notre conteneur mandataire inverse). On va donc creer un commutateur virtuel dans lequel on mettra les trois interfaces virtuelles eth0 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 ommettre d'activer les interfaces, sans quoi la communication sera 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