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

  • Objet : Créer des environnements cloisonnés avec LXC sous Debian Wheezy
  • Niveau requis :
  • Commentaires : Entre machine virtuelle et chroot, votre cœur balance : choisissez LXC (Linux Containers)
  • Suivi :
    • Création par bendia le 22/02/2014
    • Testé par bendia le 21/02/2014
    • Testé par paskal le 01/03/2014
  • Commentaires sur le forum : ici 1)

Nota : Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

LXC (LinuX Container) est un système permettant d'installer plusieurs distributions et applications séparées 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.

Attention ! Sous Debian 7 Wheezy, LXC peut ne pas fournir une isolation suffisante permettant ainsi sous certaines conditions aux systèmes invités de compromettre le système hôte.
Cette situation est en cours d'évolution avec 3.12/lxc-beta2 : https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/

Installation

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

apt-get install lxc

Lors de l'installation, vous devez indiquer l'emplacement où seront installés 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

La modification de /etc/fstab n'est pas nécessaire sous Jessie si systemD et le paquet libvirt-bin sont installés. Le montage de cgroup sera effectué automatiquement.

LXC utilise le mécanisme des Control Groups (les cgroups), une fonctionnalité du noyau Linux pour limiter, compter et isoler l’utilisation des ressources (processeur, mémoire, utilisation disque, etc.). Voir les détails sur :

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
retour de la commande
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 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

Personnaliser un fichier template

Si les templates fournis ne répondent pas à vos besoin, ils peuvent néanmoins constituer un point de départ à la confection de votre modèle.
Par exemple, les modifications suivantes vous permettront d'avoir les locales françaises :

sed -i -e "s/locale-gen en_US.UTF-8 UTF-8/locale-gen fr_FR.UTF-8/g" /usr/share/lxc/templates/lxc-debian
sed -i -e "s/update-locale LANG=en_US.UTF-8/update-locale LANG=fr_FR.UTF-8/g" /usr/share/lxc/templates/lxc-debian

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.
Utilisez 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

Arrêter le conteneur sans arrêt propre par SysV :

lxc-stop -n myfirstcontainer

Pour un arrêt propre :

lxc-halt -n myfirstcontainer

Afficher la liste des conteneurs

lxc-ls
retour de la commande
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
retour de la commande
state:   RUNNING
pid:     19879

Lister les conteneurs et leur état

lxc-list
retour de la commande
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 :-)

séquence interactive
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 
 
Debian GNU/Linux 7 myfirstcontainer tty1
 
myfirstcontainer login: root
Mot de passe : 
Dernière connexion : dimanche  2 mars 2014 à 16:45:20 CET sur tty1
Linux myfirstcontainer 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@myfirstcontainer:~# df -h
Sys. fich.     Taille Util. Dispo Uti% Monté sur
tmpfs            372M   20K  372M   1% /run
tmpfs            5,0M     0  5,0M   0% /run/lock
tmpfs            1,5G     0  1,5G   0% /run/shm
rootfs           7,7G  6,5G  865M  89% /
root@myfirstcontainer:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:ff:12:34:56:79 
          inet adr:192.168.1.57  Bcast:192.168.1.255  Masque:255.255.255.0
          adr inet6: fe80::2ff:12ff:fe34:5679/64 Scope:Lien

Quitter le conteneur

Ctrl+A+Q

TP associés

Liens

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/autres/vm/lxc.1450867611.txt.gz · Dernière modification: 23/12/2015 11:46 par captnfab

Pied de page des forums

Propulsé par FluxBB