Notes et astuces sur les systèmes libres basés sur GNU/Linux

Aller au contenu | Aller au menu | Aller à la recherche

jeudi, 16 mai 2013

LXC, la solution de virtualisation légère

Si comme moi vous aimez bien tester différents outils ou services GNU/Linux sans encombrer votre machine réelle, la solution de virtualisation par container LXC pourrait grandement vous aider.poupée russe

Voici les quelques avantages de cet outil :

  • Optimisation de l'utilisation de votre machine en hébergeant plusieurs configurations systèmes
  • Sécurisation de vos process en les mettant à l'abris dans un "chroot amélioré".
  • Facilité d'installation car l'outil est intégré au noyau Linux.
  • Avoir sous la main un autre GNU/Linux sans manger toute vos ressources CPU


Cet article n'a pas d'autre prétention que de me servir de bloc-note lors d'une prochaine réinstallation et ajouter une ressource française sur le sujet.

Pour l'installer sous Debian :Logo debian

Si besoin ajouter le système de paramétrage CGROUP à votre liste de points de montage dans votre fichier etc/fstab (vérifiez si la ligne suivante est déjà présente):

cgroup          /sys/fs/cgroup  cgroup  defaults        0       0

Si l'on souhaite mettre nos machines virtuelles directement sur le réseau physique, nous avons besoin de créer un pont sur lequel viendra se brancher notre machine physique ainsi que nos machines virtuelles.

Le paquet bridge-utils va créer un pont/commutateur/switch entre vos machines virtuelles/physique et votre réseau local (LAN).

Schema reseau

aptitude install bridge-utils
Pour mettre en place cette configuration, vous allez devoir remplacer votre eth0 en DHCP par br0 dans /etc/network/interfaces :
auto br0
iface br0 inet dhcp
bridge-ports eth0

Installez le paquet LXC contenant un ensemble de script et de templates :

aptitude install lxc

Si vous souhaitez installer une Debian dans un de vos conteneurs, vous aurez besoin d'installer debootstrap :

aptitude install debootstrap

Maintenant, pour créer votre premier container de type Debian sans limitation :

lxc-create -n le_nom_de_votre_container -t debian

Il faudra configurer votre container avant de le lancer en allant toucher le fichier de configuration dans /var/lib/le_nom_de_votre_container/config. Les lignes importantes à modifier sont :

lxc.network.type = veth
lxc.network.flags = up
#On s'appuie sur l'interface br0 physique
lxc.network.link = br0
#On nomme notre interface virtuel eth0
lxc.network.name = eth0

Par défaut sous Debian, lxc ne vous crée pas de terminal pour vous connecter à votre machine virtuelle.
Avouez que c'est dommage !
Nous allons y remédier en créant nous même le fichier spécial correspondant à un terminal virtuel avec mknod :

mknod -m 666 /var/lib/lxc/le_nom_de_votre_container/roots/dev/tty c 4 1

Si vous souhaitez lancer votre machine avec une console virtuel mais ATTENTION vous ne pourrez pas quitter la console sans éteindre votre container :
lxc-start -n le_nom_de_votre_container

Si vous voulez avoir en tâche de fond votre machine virtuelle ou tout simplement pouvoir quitter votre console quand vous le souhaitez (via Ctrl a +q) :

lxc-start -n le_nom_de_votre_container -d

Maintenant, vous pouvez accéder à votre console :

lxc-console -n le_nom_de_votre_container

Ma difficulté à l'installation venait surtout de la création de la console virtuelle sur une version Testing.

Pour l'installer sous ArchLinux :Logo archlinux

La seule difficulté que j'ai rencontré sous Archlinux est la configuration du bridge.
Je passe brièvement l'installation des paquets vus précédemment :

pacman -S lxc bridge-utils

Si besoin rebooter votre machine pour prendre en compte vos nouveaux modules :

lsmod | grep br
bridge                 85984  0
stp                     1621  1 bridge
llc                     3729  2 stp,bridge

Normalement, l'utilitaire netcfg doit créer votre pont automatiquement avec les paramètres que l'on va spécifier ci-dessous :

pacman -S netcfg
Modifier le fichier/etc/network.d/bridge :
INTERFACE="br0"
CONNECTION="bridge"
DESCRIPTION="Mon pont davignon"
BRIDGE_INTERFACES="enp4s0"
IP="dhcp"

Modifier le fichier /etc/conf.d/netcfg :

# Network profiles are found in /etc/network.d
NETWORKS=(bridge)

Ajouter l'unité à votre démarrage afin de monter le réseau à chaque démarrage :

systemctl enable netcfg@bridge.service

Pour créer manuellement votre pont si cela n'a pas été fait :

brctl addif br0 enp4s0

Modifier le fichier /usr/share/lxc/templates/lxc-debian (L.175)afin de faire fonctionner le template:

arch="amd64"


Au plaisir.

Ps : Pas de bol pour moi, une personne vient de publier un article sur LXC sous Debian à l'instant en Français. J'aurais été en début d'écriture, je n'aurai pas écrit ...

Edit : Ajout de la modification du template debian