This commit is contained in:
Benoît S. 2017-01-23 15:50:05 +01:00
parent 771c20b43b
commit fc3d28fd77

View file

@ -2,105 +2,93 @@
# HowtoLXC
## Debian 8 (JESSIE)
## Debian 8 (Jessie)
## Installation
~~~
# apt install lxc bridge-utils libvirt-bin debootstrap
# apt install lxc bridge-utils ??libvirt-bin?? debootstrap
~~~
## Modifications réseau
## Mise en place du réseau virtuel
Obligatoire si vous voulez un accès Internet dans vos conteneurs. Une des façons de faire et de monter un bridge qui contiendra tout les conteneurs. Ensuite via iptables, on fera du NAT pour router le réseau privé du bridge via l'interface principale (souvent eth0).
~~~
# cat /etc/network/interfaces
[...]
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
bridge_maxwait 0
address 10.10.10.42
address 192.0.2.254
netmask 255.255.255.0
gateway 10.10.10.254
auto br1
iface br1 inet static
pre-up brctl addbr br1
address 10.1.0.254
netmask 255.255.255.0
bridge_fd 0
post-down brctl delbr br1
~~~
~~~
# /sbin/iptables -A INPUT -p tcp --sport 11371 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# /sbin/iptables -t nat -A POSTROUTING -s 10.1.0.254/24 -o br0 -j SNAT --to *IP de l'hyperviseur*
# echo 1 > /proc/sys/net/ipv4/ip_forward
# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#### /sbin/iptables -t nat -A POSTROUTING -s 10.1.0.254/24 -o br0 -j SNAT --to *IP de l'hyperviseur*
#### /sbin/iptables -A INPUT -p tcp --sport 11371 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
~~~
Activation du forwarding
~~~
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_announce=2" >> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_ignore=1" >> /etc/sysctl.conf
# echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
# sysctl -w net.ipv4.ip_forward=1
# sysctl -w net.ipv4.conf.all.rp_filter=0
# sysctl -w net.ipv4.conf.all.arp_ignore=1
# sysctl -w net.ipv4.conf.all.arp_announce=2
~~~
## Installation d'un container
En choisissant de créer un conteur avec `-t download`, cela vous permettra via un prompt de choisir quel type de distribution à installer.
~~~
# lxc-create -t download -n test
# lxc-create -t download -n foo
~~~
Avant de démarrer la VM mettre ces lignes dans le fichier de conf du conteneur : ``/var/lib/lxc/test/config`
On peut directement choisir quel type de distribution on veut.
~~~
# # lxc-create -t debian -n foo
~~~
### Déclarer le réseau virtuel dans la configuration du conteneur
Exemple avec la machine `foo`, via le fichier `/var/lib/lxc/foo/config`
~~~
lxc.network.type = veth
lxc.network.link = br1
lxc.network.ipv4 = 10.1.0.X/24
lxc.network.ipv4.gateway = 10.1.0.254
lxc.network.link = br0
lxc.network.ipv4 = 192.0.2.10/24
lxc.network.ipv4.gateway = 192.0.2.254
lxc.network.name = eth0
lxc.network.flags = up
~~~
(Il est conseillé de supprimer systemd du container car ce dernier est mal géré pour le moment)
~~~
# apt install sysvinit-core
~~~
## Utilisation
Démarrer un conteneur :
~~~
# lxc-start -n test -d
# lxc-start -n foo -d
~~~
Entrer dans un conteneur :
~~~
# lxc-attach -n test
# lxc-attach -n foo
~~~
Arreter un conteneur :
Arrêter un conteneur :
~~~
# lxc-stop -n test
# lxc-stop -n foo
~~~
Autres commandes utiles :
~~~
# lxc-info -n test-container
# lxc-console -n test-container
# lxc-halt -n test-container
# lxc-info -n test-container
# lxc-destroy -n test-container
# lxc-info -n foo
# lxc-console -n foo
# lxc-halt -n foo
# lxc-info -n foo
# lxc-destroy -n foo
~~~
Si systemd dans un container pose souci, on peut revenir à sysvinit.
~~~
# apt install sysvinit-core
~~~