Création de containers LXC sur CentOS 7

LXCCréation de containers LXC sur CentOS  – 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.

 

CentOS /