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 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.
Installer le paquet lxc qui contient les outils permettant de créer, lancer, supprimer des conteneurs LXC
apt-get install lxc
D'autres paquets sont recommandés, et notamment debootstrap qui permettra d'installer un autre système Debian, bridge-utils quand a lui vous permettra de créer des interfaces de type “pont” permettant a votre conteneur de communiquer avec l'extérieur:
apt-get install bridge-utils libvirt-bin debootstrap
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
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 par exemple un système, tiens au hasard, Une 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
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
Un fichier par défaut est créé lors de la création du conteneur, par exemple :
# Template used to create this container: /usr/share/lxc/templates/lxc-debian # Parameters passed to the template: -r jessie # For additional config options, please look at lxc.container.conf(5) lxc.network.type = none lxc.rootfs = /var/lib/lxc/proxies/rootfs lxc.start.auto = 1 # Common configuration lxc.include = /usr/share/lxc/config/debian.common.conf # Container specific configuration lxc.mount = /var/lib/lxc/proxies/fstab lxc.utsname = proxies lxc.arch = i386 lxc.autodev = 1 lxc.kmsg = 0
Ce fichier est à adapter suivant les besoins.
lxc-start -n myfirstcontainer -d
Simple comme Debian
systemctl enable lxc
ensuite éditez le fichier /var/lib/lxc/$containername/config
lxc.start.auto = 1
puis on vérifie par un
lxc-ls --f
qui vous renvois ça
NAME STATE IPV4 IPV6 AUTOSTART --------------------------------------- myfirstcontainer STOPPED - - YES
Arrêter le conteneur sans arrêt propre par SysV :
lxc-stop -n myfirstcontainer
Pour un arrêt propre :
lxc-halt -n myfirstcontainer
lxc-ls -f
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
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
Ctrl+A+Q