logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


LXC ou la virtualisation allégée

Introduction

LXC (LinuX Container) est un système permettant d'installer plusieurs distributions séparée les unes des autres (comme des machines virtuelles) mais qui partagent malgré tout le même noyau du système hôte. Il est donc à mi-chemin entre un chroot et une machine virtuelle.

Installation

Installer le paquet lxc qui contient les outils permettant de créer, lancer supprimé des conteneurs LXC

apt-get install lxc

Lors de l'installation, vous devez indiquer l'emplacement où seront installée vos conteneur, /var/lib/lxc par défaut (FIXME Y-a-t-il des précautions pour installer sur une autre partition par exemple ?)

D'autres paquets sont recommandés, et notamment debootstrap qui permettra d'installer un autre système Debian

apt-get install bridge-utils libvirt-bin debootstrap

Utilisation

Préparer le système hôte

/etc/fstab

LXC utilise le mécanisme des Control Groups (les cgroups).
Il est nécessaire de lister ce système de fichier virtuel dans /etc/fstab

cgroup  /sys/fs/cgroup  cgroup  defaults  0   0

et monter le système de fichier

mount /sys/fs/cgroup

Vérifier la configuration du noyau

lxc-checkconfig
Kernel config /proc/config.gz not found, looking in other places...
Found kernel config file /boot/config-3.2.0-4-amd64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

Création de RootFS

LXC vient avec des Templates, c'est à dire des scripts permettant l'installation simple d'un système. Il en existe pour Debian, Archlinux, Fedora, OpenSuse et Ubuntu.

Créons don par exemple un système, tiens au hasard, Debian :-D

lxc-create -n myfirstcontainer -t debian

Cela va nous installer une Debian Stable super minimale dans la même architecture que le système hôte (i386, AMD64 …) dans /var/lib/lxc/myfirstcontainer/rootfs et un fichier de configuration /var/lib/lxc/myfirstcontayner/config.

Il existe quelques options pour ce template, notamment pour le choix de la version. Par exemple pour installer une Debian Sid

lxc-create -n sid-container -t debian -- -r sid

Le fichier de configuration

Un fichier par défaut est créé lors de la création du conteneur, par exemple :

/var/lib/lxc/myfirstcontainer/config
lxc.rootfs = /var/lib/lxc/myfirstcontainer/rootfs
lxc.tty = 4
lxc.pts = 1024
lxc.arch = amd64
lxc.utsname = myfirstcontainer
lxc.cap.drop = sys_module mac_admin mac_override sys_time
 
# When using LXC with apparmor, uncomment the next line to run unconfined:
#lxc.aa_profile = unconfined
 
lxc.cgroup.devices.deny = a
# /dev/null and zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rm
 
# mounts point
lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry = sysfs sys sysfs defaults  0 0

Ce fichier est à adapter suivant les besoins.

Lancer le conteneur

lxc-start -n myfirstcontainer -d

le -n pour indiquer le nom du conteneur, le -d pour le lancer en arrière plan ( non attaché à la console )

Sans le -d, il ne sera pas possible de quitter proprement le conteneur. Utiliser lxc-start au premier plan seulement dans un but de debuggage.

Pour un démarrage automatique

ln -s /var/lib/lxc/mycontainer/config /etc/lxc/auto/mycontainer

Arrêter le conteneur

lxc-stop -n myfirstcontainer

Arrête le conteneur sans arrêt propre par SysV. Pour un arrêt propre

lxc-halt -n myfirstcontainer

Afficher la liste des conteneurs

lxc-ls
myfirstcontainer
monsecondconteneur
unautreconteneur

Mettre en pause un conteneur

lxc-freeze -n myfirstcontainer

Sortir de pause un conteneur

lxc-unfreeze -n myfirstcontainer

Détruire un conteneur

lxc-destroy -n myfirstcontainer

Afficher l'état d'un conteneur et son PID

lxc-info -n myfirstcontainer
state:   RUNNING
pid:     19879

Lister les conteneurs et leur état

lxc-list
RUNNING
  myfirstcontainer

FROZEN
  unautreconteneur

STOPPED
  monsecondconteneur

Se connecter au conteneur

lxc-console -n myfirstcontainer

Le login/mot de passe est root/root à changer à la première connexion :-)

Quitter le conteneur

Ctrl+a q

Liens

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/autres/vm/lxc.1393763423.txt.gz · Dernière modification: 02/03/2014 13:30 par captnfab

Pied de page des forums

Propulsé par FluxBB