Installer et utiliser LXC sur CentOS

Cet article a été mis à jour, vous consultez ici une archive de cet article!



Présentation LXC



LXC, contraction de l’anglais LinuX Containers est un système de virtualisation, utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau et une plus ou moins grande partie du système hôte. Le conteneur apporte une virtualisation de l'environnement d'exécution (Processeur, Mémoire vive, réseau, système de fichier…;) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de machine virtuelle.

Ce système est similaire aux autres systèmes de virtualisations au niveau du système d'exploitation comme openVZ.


Installation des composants de base



Le système installé est une CentOS 7 64bits.
S'assurer que le système est à jour, et que les dépôts EPEL soient installés.

Ensuite, on installe LXC, les Modèles LXC (templates) et deux outils :

Code BASH :
yum install lxc lxc-templates bridge-utils debootstrap bzip2 tar gzip wget


Une fois l'opération terminée, on vérifie l'environnement LXC :

Code BASH :
lxc-checkconfig
 
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-3.10.0-123.6.3.el7.x86_64
<h2 class="wiki_paragraph2" id="paragraph_namespaces">Namespaces</h2><br />
 
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
 
<h2 class="wiki_paragraph2" id="paragraph_control-groups">Control groups</h2><br />
 
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
 
<h2 class="wiki_paragraph2" id="paragraph_misc">Misc</h2><br />
 
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
 



Utilisons LXC



Bon, maintenant que tout est installé, on va installer notre premier conteneur LXC.
Pour voir les scripts de création de templates disponibles, exécuter :

Code BASH :
ls /usr/share/lxc/templates/
lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora  lxc-openmandriva  lxc-oracle  lxc-sshd    lxc-ubuntu-cloud
lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-gentoo  lxc-opensuse      lxc-plamo   lxc-ubuntu
 


Pour la suite, je vais utiliser une Gentoo.

Pour créer une machine virtuelle LXC avec le système Gentoo, nommée mavm :

Code BASH :
lxc-create -t gentoo -n mawm


Le téléchargement des fichiers requis débute, et la machine va se construire toute seule :

Code BASH :
### set_default_arch: default arch/variant autodetect...
 => Got: arch=amd64 variant=amd64
Attempting to obtain an exclusive lock (timeout: 60 sec) named "cache-amd64-amd64"...
 => done.
 => Executing "do_all"
###### cache_setup(): doing cache preparation
### cache_precheck(): doing some pre-start checks ...
### cache_stage3(): stage3 cache deployment...
Determining path to latest Gentoo amd64 (amd64) stage3 archive...
 => downloading and processing http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64.txt
 => Got: 20140807/stage3-amd64-20140807.tar.bz2
Downloading/untarring the actual stage3 tarball...
--2014-08-14 18:22:44--  http://distfiles.gentoo.org/releases/amd64/autobuilds/20140807/stage3-amd64-20140807.tar.bz2
Résolution de distfiles.gentoo.org (distfiles.gentoo.org)... 156.56.247.195, 64.50.236.52, 140.211.166.134, ...
Connexion vers distfiles.gentoo.org (distfiles.gentoo.org)|156.56.247.195|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 186320443 (178M) [application/x-tar]
Sauvegarde en : «STDOUT»
 



Lancer une machine virtuelle LXC