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

De Wiki d'activités IMA
(Configuration du fichier /etc/apache2/sites-available/000-default)
Ligne 136 : Ligne 136 :
  
 
10h15 => Serveurs Web unshare OK
 
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

Version du 19 novembre 2018 à 11:52

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 :

    1. nano /etc/default/docker
  • On commente la ligne avec iptable=false
    1. iptables-save
    2. service docker restart
    3. docker run -i -t debian /bin/bash

Dans le conteneur :

Hors du conteneur :

    1. docker ps
    2. docker commit [ID du conteneur] apache2(c'est le nom choisi pour l'image)
  • on quitte le conteneur (on peut le tuer)
    1. docker network create pontpont
    1. docker run -i -t apache2 --net=pontpont
    2. docker run -i -t apache2 --net=pontpont
    3. docker run -i -t apache2 --net=pontpont -p80:80