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 # HowtoLXC
## Debian 8 (JESSIE) ## Debian 8 (Jessie)
## Installation ## 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 # cat /etc/network/interfaces
[...] [...]
auto br0 auto br0
iface br0 inet static iface br0 inet static
bridge_ports eth0 address 192.0.2.254
bridge_fd 0
bridge_maxwait 0
address 10.10.10.42
netmask 255.255.255.0 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 # echo 1 > /proc/sys/net/ipv4/ip_forward
# /sbin/iptables -t nat -A POSTROUTING -s 10.1.0.254/24 -o br0 -j SNAT --to *IP de l'hyperviseur* # /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 ## 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.type = veth
lxc.network.link = br1 lxc.network.link = br0
lxc.network.ipv4 = 10.1.0.X/24 lxc.network.ipv4 = 192.0.2.10/24
lxc.network.ipv4.gateway = 10.1.0.254 lxc.network.ipv4.gateway = 192.0.2.254
lxc.network.name = eth0 lxc.network.name = eth0
lxc.network.flags = up 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 ## Utilisation
Démarrer un conteneur : Démarrer un conteneur :
~~~ ~~~
# lxc-start -n test -d # lxc-start -n foo -d
~~~ ~~~
Entrer dans un conteneur : 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 : Autres commandes utiles :
~~~ ~~~
# lxc-info -n test-container # lxc-info -n foo
# lxc-console -n test-container # lxc-console -n foo
# lxc-halt -n test-container # lxc-halt -n foo
# lxc-info -n test-container # lxc-info -n foo
# lxc-destroy -n test-container # lxc-destroy -n foo
~~~ ~~~
Si systemd dans un container pose souci, on peut revenir à sysvinit.
~~~
# apt install sysvinit-core
~~~