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 →
Ceci est une ancienne révision du document !
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.
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 ( 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
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
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
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
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
Un fichier par défaut est créé lors de la création du conteneur, par exemple :
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.
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 )
Pour un démarrage automatique
ln -s /var/lib/lxc/mycontainer/config /etc/lxc/auto/mycontainer
lxc-stop -n myfirstcontainer
Arrête le conteneur sans arrêt propre par SysV. Pour un arrêt propre
lxc-halt -n myfirstcontainer
lxc-ls
myfirstcontainer monsecondconteneur unautreconteneur
lxc-freeze -n myfirstcontainer
lxc-unfreeze -n myfirstcontainer
lxc-destroy -n myfirstcontainer
lxc-info -n myfirstcontainer
state: RUNNING pid: 19879
lxc-list
RUNNING myfirstcontainer FROZEN unautreconteneur STOPPED monsecondconteneur
lxc-console -n myfirstcontainer
Le login/mot de passe est root/root à changer à la première connexion
Ctrl+a q