Installer et utiliser LXC sur Gentoo / Calculate Linux
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.
LXC a besoin des fonctionnalités CGROUP du noyau linux.
Ces valeurs de configuration doivent être positionnées à y :
On peut trouver ces valeurs via la commande suivante :
Si tout n'est pas sur "y" :
Désactiver le FLAG minimal :
Puis réémerger le noyau :
Se rendre dans les sources :
Nettoyer les compilations précédentes :
Copier la configuration actuelle dans .config :
Passer à y les valeurs non définies :
Voici une commande sympathique pour vérifier tout d'un coup :
Puis éditer avec l'éditeur de son choix le fichier .config pour placer chaque valeur à y.
J'ai opté personnellement pour sed :
Puis on recompile le noyau :
Présentation de 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.
Prérequis pour l'installation
LXC a besoin des fonctionnalités CGROUP du noyau linux.
Ces valeurs de configuration doivent être positionnées à y :
Code BASH :
CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CGROUPS=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y CONFIG_CGROUP_FREEZER=y CONFIG_VETH=y CONFIG_MACVLAN=y CONFIG_MACVTAP=y CONFIG_BRIDGE=y
On peut trouver ces valeurs via la commande suivante :
Code BASH :
zcat /proc/config.gz
Si tout n'est pas sur "y" :
Désactiver le FLAG minimal :
Code BASH :
echo "sys-kernel/calculate-sources -minimal" >> /etc/portage/package.use/custom
Puis réémerger le noyau :
Code BASH :
emerge -q sys-kernel/calculate-sources
Se rendre dans les sources :
Code BASH :
cd /usr/src/linux
Nettoyer les compilations précédentes :
Code BASH :
make distclean
Copier la configuration actuelle dans .config :
Code BASH :
zcat /proc/config.gz > .config
Passer à y les valeurs non définies :
Voici une commande sympathique pour vérifier tout d'un coup :
Code BASH :
grep CONFIG_NAMESPACES .config ; \ grep CONFIG_UTS .config ; \ grep CONFIG_IPC .config ; \ grep CONFIG_USER_NS .config ; \ grep CONFIG_PID_NS .config ; \ grep CONFIG_NET_NS .config ; \ grep CONFIG_CGROUPS .config ; \ grep CONFIG_CGROUP_DEVICE .config ; \ grep CONFIG_CPUSETS .config ; \ grep CONFIG_DEVPTS_MULTIPLE_INSTANCES .config ; \ grep CONFIG_CGROUP_FREEZER .config ; \ grep CONFIG_VETH .config ; \ grep CONFIG_MACVLAN .config ; \ grep CONFIG_MACVTAP .config ; \ grep CONFIG_BRIDGE .config
Puis éditer avec l'éditeur de son choix le fichier .config pour placer chaque valeur à y.
J'ai opté personnellement pour sed :
Code BASH :
sed -e 's/# CONFIG_CGROUP_DEVICE is not set/CONFIG_CGROUP_DEVICE=y/g' -i .config sed -e 's/# CONFIG_CPUSETS is not set/CONFIG_CPUSETS=y/g' -i .config sed -e 's/# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set/CONFIG_DEVPTS_MULTIPLE_INSTANCES=y/g' -i .config sed -e 's/# CONFIG_CGROUP_FREEZER is not set/CONFIG_CGROUP_FREEZER=y/g' -i .config sed -e 's/# CONFIG_VETH is not set/CONFIG_VETH=y/g' -i .config sed -e 's/# CONFIG_MACVLAN is not set/CONFIG_MACVLAN=y/g' -i .config sed -e 's/# CONFIG_MACVTAP is not set/CONFIG_MACVTAP=y/g' -i .config sed -e 's/CONFIG_BRIDGE=m/CONFIG_BRIDGE=y/g' -i .config
Puis on recompile le noyau :
Code BASH :
make oldconfig make make modules_install make install dracut --force #emerge @module-rebuild #cl-setup-boot