LXC et Raspberry PI

Je n'aborde pas dans cet article l'installation de Raspbian sur votre Raspberry Pi. Je pars du principe que celle ci est fonctionnelle.

Installation de LXC

Rien de plus simple :

apt install lxc

Configuration Réseau

Petit point à préciser à ce niveau, mon routeur fait office de serveur DHCP, c'est lui qui attribue aux machines de mon réseau leurs adresses IP privées.

Commençons par modifier le fichier /etc/default/lxc tel que :

USE_LXC_BRIDGE="true

Puis le fichier /etc/lxc/default.conf :

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0

Et pour terminer le fichier /etc/network/interfaces :

auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
auto br0
iface br0 inet dhcp
    bridge-ifaces eth0
    bridge-ports eth0
    up ifconfig eth0 up

iface eth0 inet manual

Redémarrez lxc-net :

systemctl restart lxc-net

Création du premier container lxc

Une seule commande suffit pour créer votre container :

# lxc-create -n VM_pouet -t download -- -d debian -r stretch -a armhf

Démarrez votre container :

# lxc-start -n VM_pouet

Vous pouvez à ce stade obtenir certaines informations avec la commande :

# lxc-ls --fancy
NAME      STATE   AUTOSTART GROUPS IPV4          IPV6                                                                                                                         
VM_pouet  RUNNING 0         -      192.168.1.222  fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4  

On constate que le container dispose bien d'adresses IP privées et qu'elles sont bien accessible :

# ping 192.168.1.222 -c3
PING 192.168.1.222 (192.168.1.222) 56(84) bytes of data.
64 bytes from 192.168.1.222: icmp_seq=1 ttl=64 time=0.630 ms
64 bytes from 192.168.1.222: icmp_seq=2 ttl=64 time=0.162 ms
64 bytes from 192.168.1.222: icmp_seq=3 ttl=64 time=0.147 ms

--- 192.168.1.222 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2049ms
rtt min/avg/max/mdev = 0.147/0.313/0.630/0.224 ms


# ping fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4 -c3
PING fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4(fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4) 56 data bytes
64 bytes from fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4: icmp_seq=1 ttl=64 time=0.605 ms
64 bytes from fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4: icmp_seq=2 ttl=64 time=0.196 ms
64 bytes from fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4: icmp_seq=3 ttl=64 time=0.165 ms
--- fd51:58c1:8d6f:0:1c7b:85ff:feff:2be4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2047ms
rtt min/avg/max/mdev = 0.165/0.322/0.605/0.200 ms

Vous disposez donc à présent d'un container fonctionnel et disposant de sa propre connectivité.