Création de containers LXC sur CentOS 7
LXC – ou LinuX Containers – est un gestionnaire de machines virtuelles permettant l’exécution d’applications dans des containers. Les modules des périphériques utilisés par le container sont ceux du système Linux de la machine hôte. Ce projet est supporté par Canonical, l’éditeur de la distribution Ubuntu.
La grosse différence avec VirtualBox ou VMWare Player / WorkStation est que les fichiers de la machine virtuelle sont stockés dans le filesystem de la machine hôte. Les fichiers ne sont donc pas encapsulés à l’intérieur d’un fichier VDI, VMDK, VHD, … Les containers LXC peuvent s’exécuter dans une machine Linux elle-même virtualisée à l’aide de VirtualBox. C’est extrêmement pratique pour les tests, le développement et les formations. Vous n’altérez pas le fonctionnement de la machine hôte, en installant toutes sortes d’applications dans les containers des machines virtuelles.
Ce tuto peut s’appliquer dans son intégralité à Fedora 27, dans les mêmes termes
Installation de LXC sur CentOS 7
Pour pouvoir créer un container LXC sur CentOS, vous devez installer 3 paquets principaux :
yum install lxc lxc-templates libvirt
Le paquet libvirt permet de disposer d’une interface réseau virtuelle du type virbr0. Une fois installés, les modèles de containers disponibles sur CentOS sont présents dans le dossier /usr/share/lxc/templates.
Pour vérifier l’environnement LXC, tapez en ligne de commandes :
lxc-checkconfig
Vous devez ensuite activer et démarrer les services libvirtd et lxc :
systemctl enable libvirtd systemctl enable lxc systemctl start libvirtd systemctl start lxc
Création de LinuX Containers
Les containers LXC se créent à l’aide de la commande lx-create . Par défaut, ils sont stockés dans le dossier /var/lib/lxc/. Le paramètre -t représente le modèle de système Linux. Ici, j’ai choisi de créer un container CentOS.
lxc-create -t centos -n centoslxc
Pour détruire le container créé précédemment :
lx-destroy -n centoslxc rm -fr /var/lib/lxc/centoslxc
La commande rm n’est pas nécessaire sur Fedora, qui se contente de la commande lx-destroy pour nettoyer complètement le dossier du container.
Changement du mot de passe de la machine virtuelle LXC
Le mot de passe temporaire du container est stocké dans /var/lib/lxc/centoslxc/tmp_root_pass. Pour changer le mot de passe du container, tapez à partir de la ligne de commandes :
chroot /var/lib/lxc/centoslxc/rootfs passwd
Lancement du container
Pour démarrer le container, utilisez la commande lxc-start. Pour démoniser ce container, autrement dit pour le lancer en service, employez le commutateur -d.
lxc-start -n centoslxc -d
Pour savoir si la machine virtuelle est en exécution, tapez
lxc-info -n centoslxc lxc-info -n centoslxc -i
Le commutateur -i permet de connaître l’adresse ip du container, afin de s’y connecter en SSH.
Pour arrêter le container :
ssh root@adresse_ip_du_container 'poweroff' lxc-stop -n centoslxc
Fichier de configuration LXC
Le fichier de configuration du container centoslxc se trouve à l’emplacement /var/lib/lxc/centoslxc/config. Pour démarrer automatiquement la machine virtuelle, ajoutez à ce fichier :
lxc.start.auto = 1
Sur Fedora, j’ai dû modifier l’adapteur réseau utilisé en modifiant le fichier de configuration comme suit :
lxc.network.link=virbr0
Le fichier /var/lib/lxc/centoslxc/config est lui-même hérité du fichier /etc/lxc/default.conf.
Autre méthode de connexion en mode root
Vous pouvez vous connecter en mode root sans connaître le mot de passe en utilisant la commande lxc-attach :
lxc-attach -n centoslxc
La commande lxc-attach permet d’exécuter des commandes dans le container à partir de la machine physique en tant que root.
lxc-attach -n centoslxc yum install openssh-server lxc-attach -n centoslxc systemctl start sshd lxc-attach -n centoslxc systemctl enable sshd
Autres commandes à creuser
La commande lxc-ls, très curieusement, n’est pas présente sur CentOS. Je n’ai pas pensé à vérifier sur Fedora.
Bogue rencontré
J’ai rencontré le même bogue que celui évoqué sur Red Hat Bugzilla avec la version LXC 1.0.11 sous CentOS 7. La machine se freeze à l’occasion d’un yum install. En revanche, je n’ai pas rencontré de bogue sur LXC 2.0.9 qui s’exécute sous Fedora 27.