CentOS 7 : Installer et utiliser LXC
Table des matières
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.
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 :
Une fois l'opération terminée, on vérifie l'environnement 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 :
Pour la suite, je vais utiliser une Gentoo.
Pour créer une machine virtuelle LXC avec le système Gentoo, nommée mavm :
Le téléchargement des fichiers requis débute, et la machine va se construire toute seule :
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 <h3 class="formatter-title wiki-paragraph-3" id="paragraph-namespaces">Namespaces</h3> Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled <h3 class="formatter-title wiki-paragraph-3" id="paragraph-control-groups">Control groups</h3> Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled <h3 class="formatter-title wiki-paragraph-3" id="paragraph-misc">Misc</h3> 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»