TP sysres IMA5sc 2018/2019 G6
Sommaire
- 1 Séance 1 :
- 1.1 Création du dd virtuel :
- 1.2 Formattage du disc :
- 1.3 Création des points d'ancrage dans /tmp
- 1.4 Montage du disk :
- 1.5 Accès au dépôt distant de debian :
- 1.6 Création du système de fichier sur fs1 :
- 1.7 Pour simplifier l'acces :
- 1.8 Démontage du disk :
- 1.9 Copie collage du disk.im en disk1.img disk2.img disk3.img
- 1.10 Isolation des conteneurs (aussi au niveau réseau)
- 1.11 Création d'un commutateur virtuel :
- 1.12 creation des 3 interfaced reseaux, + interface proxy inverse
- 1.13 recuperation des PID :
- 1.14 on relie les vif sur les conteneurs
- 1.15 démarrage des interfaces et du pontpont
- 1.16 Dans le conteneur 1
- 1.17 Dans le conteneur 2
- 1.18 Dans le conteneur 3
- 2 Séance 2 :
- 3 Docker
Séance 1 :
Création du dd virtuel :
dd if=/dev/zero of=disk.img bs=1024k count=10240
Formattage du disc :
mkfs disk.img
Création des points d'ancrage dans /tmp
cd /tmp mkdir fs1 mkdir fs2 mkdir fs3
Montage du disk :
mount -o loop disk.img /tmp/fs1
Accès au dépôt distant de debian :
export http_proxy="http://proxy.polytech-lille.fr:3128"
Création du système de fichier sur fs1 :
deboostrap --include apache2,nano,vim stable /tmp/fs1
Pour simplifier l'acces :
echo "proc /proc proc defaults 0 0" >> etc/fstab
Démontage du disk :
umount /tmp/fs1
Copie collage du disk.im en disk1.img disk2.img disk3.img
montage des 3 disk sur les /tmp/fs respectifs
- mount -o loop disk1.img /tmp/fs1
- mount -o loop disk2.img /tmp/fs2
- mount -o loop disk3.img /tmp/fs3
Isolation des conteneurs (aussi au niveau réseau)
- unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c "mount /proc ; /bin/bash"
- unshare -n -u -p -f -m chroot /tmp/fs2 /bin/sh -c "mount /proc ; /bin/bash"
- unshare -n -u -p -f -m chroot /tmp/fs3 /bin/sh -c "mount /proc ; /bin/bash"
Création d'un commutateur virtuel :
ip link add pontpont type bridge
creation des 3 interfaced reseaux, + interface proxy inverse
- 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
- ip link set vif1 master pontpont
- ip link set vif2 master pontpont
- ip link set vif3 master pontpont
- ip link set vif4 master bridge
recuperation des PID :
Sur l'ordi normal (hors conteneur)
ps aux | grep unshare
root 20224 0.0 0.0 5828 700 pts/1 S 07:08 0:00 unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c mount /proc ; /bin/bash
root 20286 0.0 0.0 5828 608 pts/2 S 07:10 0:00 unshare -n -u -p -f -m chroot /tmp/fs2 /bin/sh -c mount /proc ; /bin/bash
root 20317 0.0 0.0 5828 608 pts/3 S 07:11 0:00 unshare -n -u -p -f -m chroot /tmp/fs3 /bin/sh -c mount /proc ; /bin/bash
root 20693 0.0 0.0 12784 956 pts/0 S+ 07:15 0:00 grep unshare
on relie les vif sur les conteneurs
- ip link set eth0@vif1 netns /proc/[PID processus unshare 1]/ns/net name eth0
- ip link set eth0@vif2 netns /proc/[PID processus unshare 2]/ns/net name eth0
- ip link set eth0@vif3 netns /proc/[PID processus unshare 3]/ns/net name eth0
- ip link set eth1@vif4 netns /proc/[PID processus unshare 1]/ns/net name eth1
démarrage des interfaces et du pontpont
- ip link set vif1 up
- ip link set vif2 up
- ip link set vif3 up
- ip link set vif4 up
- ip address add dev pontpont 192.168.0.1/24
Dans le conteneur 1
- ip address add dev eth0 192.168.0.101/24
- ip link set eth0 down
- ip link set eth0 up
- ip address add dev eth1 172.26.145.111/24
- ip link set eth1 down
- ip link set eth1 up
Dans le conteneur 2
- ip address add dev eth0 192.168.0.102/24
- ip link set eth0 down
- ip link set eth0 up
Dans le conteneur 3
- ip address add dev eth0 192.168.0.103/24
- ip link set eth0 down
- ip link set eth0 up
Séance 2 :
Reservation de sous domaines sur gandi
- Champ A : feutriergosse.plil.space
lié à l'IP 172.26.145.111 (ip du mandataire inverse)
- CNAME : feutriergosse1.plil.space
- CNAME : feutriergosse2.plil.space
Configuration d'Apache2
Le conteneur 1 sert de mandataire inverse et redirige :
- les requêtes de feutriergosse1.plil.space vers le conteneur 2 d'IP 192.168.0.102
- les requêtes de feutriergosse2.plil.space vers le conteneur 3 d'IP 192.168.0.103
Configuration du fichier /etc/apache2/sites-available/000-default
<VirtualHost *:80>
ServerName feutriergosse1.plil.space ServerAdmin webmaster@feutriergosse1.plil.space ProxyPass / http://192.168.0.102/ ProxyPassReverse / http://192.168.0.102/ ProxyRequests Off ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> <VirtualHost *:80>
ServerName feutriergosse2.plil.space ServerAdmin webmaster@feutriergosse2.plil.space ProxyPass / http://192.168.0.103/ ProxyPassReverse / http://192.168.0.103/ ProxyRequests Off ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- service apache2 restart sur chaque conteneur
10h15 => Serveurs Web unshare OK
Docker
Tout d'abord il faut remettre Docker à ses paramètres d'origines :
- nano /etc/default/docker
- on commente la ligne avec iptable=false
- iptables-save
- service docker restart
- docker run -i -t debian /bin/bash
Dans le conteneur :
- export http_proxy="http://proxy.polytech-lille.fr:3128"
- export https_proxy="https://proxy.polytech-lille.fr:3128"
- apt-get update
- apt-get install nano
- apt-get install apache2
Hors du conteneur :
- docker ps
- docker commit [ID du conteneur] apache2(c'est le nom choisi pour l'image)
- on quitte le conteneur (on peut le tuer)
- docker network create pontpont
- docker run -i -t apache2 --net=pontpont
- docker run -i -t apache2 --net=pontpont
- docker run -i -t apache2 --net=pontpont -p80:80
10h20 Serveurs Web (docker) OK