LXD est décrit comme le gestionnaire de conteneurs et de machines virtuelles de nouvelle génération qui offre une immersion pour les systèmes Linux exécutés à l’intérieur de conteneurs ou en tant que machines virtuelles.
Il fournit des images pour un nombre excessif de distributions Linux avec la prise en charge d’une large sélection de backends de stockage et de types de réseaux. Il offre également la possibilité d’installer les images sur un PC/ordinateur portable individuel et même sur une instance cloud.
LXD vous permet de gérer les conteneurs et les machines virtuelles de trois manières. Vous pouvez tirer parti de client lxc ou un outil en ligne de commande, une API REST ou même des intégrations tierces.
Fonctionnalités LXD
Notable LXD les fonctionnalités incluent:
- LXD est basé sur des images avec des images pour une large sélection de distributions Linux.
- Il est construit avec la sécurité comme une priorité absolue.
- Il fournit une API REST et un outil de ligne de commande lxc pour interagir avec les conteneurs.
- Il prend en charge une large gamme de backends de stockage, de volumes de stockage et de pools de stockage.
- La gestion du réseau passe par la création de réseaux de ponts et de tunnels inter-hôtes.
- Contrôle avancé des ressources telles que le processeur, la RAM, l’utilisation du disque, les blocs d’E/S et les ressources du noyau.
- Flexible et évolutif – Vous pouvez déployer des conteneurs sur votre PC et configurer un cluster qui peut agréger des milliers de conteneurs sur différents nœuds.
Qu’est-ce que LXC ?
A ne pas confondre avec le lxc outil client en ligne de commande fourni par LXD, LXC (Conteneur Linux) est une technologie de virtualisation populaire au niveau du système d’exploitation qui utilise une API puissante et d’autres outils pour permettre aux utilisateurs de créer et de gérer de manière transparente des conteneurs et des machines virtuelles sur un seul hôte. Il comprend des modèles, un langage d’outils et des liaisons de bibliothèque.
Fonctionnalités LXC
LXC exploite les fonctionnalités du noyau suivantes pour gérer les processus :
- Espaces de noms du noyau : pid, mount, uts network et user.
- CGroups (groupes de contrôle).
- Chroots – Utilisation de pivot_root.
- Politiques de Seccomp.
- Profils SELinux et Apparmor.
Linuxcontainers.org est le projet parapluie derrière les deux LXD et LXC. Son objectif est d’offrir une plate-forme de distribution et de fournisseur neutre pour les technologies de conteneur Linux.
Avec cette introduction à l’écart, nous allons maintenant montrer comment créer et gérer LXC conteneurs sur les distributions Linux basées sur RHEL telles que CentOS, Rocky Linux, et AlmaLinux.
Exigences
Un système d’exploitation Linux fonctionnel avec une installation minimale :
Étape 1 : définissez SELinux en mode permissif
D’emblée, nous allons commencer par configurer SELinux et le définir sur permissif. Mais avant de le faire, mettons à jour les packages système comme suit :
$ sudo dnf update
Mettre en place SELinux pour permissif, exécutez la commande :
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Pour que cela prenne effet, redémarrez votre serveur.
$ sudo reboot
Et confirmer le statut de SELinux.
$ getenforce
Étape 2 : Installer le référentiel EPEL
EPEL est un référentiel du Projet Fedora qui fournit un ensemble de packages de haute qualité pour RedHat Enterprise Linux et d’autres distributions basées sur RHEL.
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm OR $ sudo yum install epel-release
Étape 3 : ajouter les paramètres du noyau
Avant d’installer LXD, certains paramètres supplémentaires sont requis. Par conséquent, passez en utilisateur root :
$ su -
Et ajoutez les paramètres comme suit.
$ grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)" $ grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)" $ echo "user.max_user_namespaces=3883" | sudo tee -a /etc/sysctl.d/99-userns.conf
Une fois les paramètres en place, continuez et activez Snap.
Étape 4 : Installer et activer Snap
La façon la plus simple d’installer LXD au RHEL 8 est de l’installer comme un se casser paquet. Mais d’abord, installons se casser comme suit.
$ sudo dnf install snapd
Cela installera snapd démon ou service aux côtés d’autres dépendances Python, comme indiqué.
Avec snap installé, continuez et activez le se casser prise de communication.
$ sudo systemctl enable --now snapd.socket
De plus, activez le support classique en créant un lien symbolique à partir de /var/lib/snapd/snap à /se casser.
$ sudo ln -s /var/lib/snapd/snap /snap
Pour mettre à jour le se casser chemins, redémarrez votre système.
$ sudo reboot
Étape 5 : Installer le gestionnaire de conteneurisation LXD
Il y a deux façons d’installer LXD de se casser. Vous pouvez installer la dernière version de LXD comme montré.
$ sudo snap install —-classic lxd
Alternativement, vous pouvez installer la dernière version stable C’EST version comme suit :
$ sudo snap install lxd --channel=4.0/stable
Pour pouvoir exécuter lxc commandes sans passer à l’utilisateur sudo, ajoutez l’utilisateur actuellement connecté au lxd grouper.
$ sudo usermod -aG lxd $USER
Vérifiez que l’utilisateur a été ajouté au lxd groupe en répertoriant tous les groupes auxquels l’utilisateur appartient.
$ groups tecmint
Ensuite, exécutez le newgrp commande comme suit.
$ newgrp lxd
La commande modifie l’ID de groupe actuel lors d’une session de connexion. Il définit l’ID de groupe actuel sur le groupe nommé qui est lxd.
Étape 6 : Initialisation de l’environnement LXD
Avant de commencer à créer et à gérer LXD conteneurs, nous devons initialiser le LXD environnement en exécutant la commande.
$ lxc init
Ce qui suit est une série d’invites qui vous permettront de configurer votre environnement. Les valeurs par défaut fonctionneront très bien, mais n’hésitez pas à spécifier vos propres préférences.
Nous avons créé un pool de stockage appelé tec-piscine avec le lvm option comme backend.
Pour vérifier le LXD environnement que vous venez de configurer, vous pouvez utiliser un certain nombre de commandes. Par exemple, pour afficher le profil LXD par défaut, exécutez :
$ lxc profile show default
Pour afficher les adaptateurs réseau et les IPv4 et IPv6 adresses, exécutez :
$ lxc network list
Vous pouvez le réduire davantage et afficher des informations plus fines sur le lxdbr0 l’interface comme suit.
$ lxc network show lxdbr0
Vous pouvez également vérifier le pool de stockage.
$ lxc storage list
Vous pouvez également obtenir des détails complexes sur le pool de stockage.
$ lxc storage show tec-pool
Pour lister en cours d’exécution lxc conteneurs, exécutez la commande :
$ lxc list
Pour le moment, nous n’avons pas encore de conteneurs en cours d’exécution. Vous obtiendrez donc un tableau vide avec uniquement les libellés des colonnes.
Étape 7 : Répertorier les images de conteneur LXC prédéfinies
Juste comme Docker, la LXC La plate-forme fournit un référentiel d’images prédéfinies à partir desquelles vous pouvez créer des conteneurs. Pour répertorier toutes les images prédéfinies pour tous les systèmes d’exploitation, y compris les machines virtuelles, exécutez la commande :
$ lxc image list images:
Cela remplit une énorme liste d’images de conteneurs et de machines virtuelles pour tous les systèmes d’exploitation. Pour vous limiter à une distribution Linux spécifique, utilisez la syntaxe :
$ lxc image list images: grep -i os-type
Par exemple, pour rechercher des images disponibles pour Linux rocheux, exécutez la commande :
$ lxc image list images: grep -i rocky
Si vous recherchez Debian images, exécutez la commande :
$ lxc image list images: grep -i debian
Étape 8 : Lancement des conteneurs LXC
Lancer lxc conteneurs, utilisez la syntaxe :
$ lxc launch images:{distro}/{version}/{arch} {container-name-here}
Ici, nous allons lancer 2 conteneurs : tec-conteneur1 à partir de Debian 10 et tec-conteneur2 à partir de Rocky Linux 8.
$ lxc launch images:debian/10/amd64 tec-container1 $ lxc launch images:rockylinux/8/amd64 tec-container2
Pour lister les lxc conteneurs, exécutez la commande :
$ lxc list
La sortie affiche une foule d’informations sur les conteneurs. Cela inclut le nom des conteneurs, l’état – qu’il soit en cours d’exécution ou arrêté – les adresses IPv4 et IPv6, le type (qu’il s’agisse d’un conteneur ou d’une machine virtuelle) et un certain nombre d’instantanés.
Pour répertorier uniquement les conteneurs en cours d’exécution, exécutez la commande :
$ lxc list | grep -i running
De même, pour les conteneurs arrêtés, exécutez :
$ lxc list | grep -i stopped
Vous pouvez rechercher les informations et les métriques d’un conteneur, telles que les processus en cours d’exécution, l’utilisation du processeur et de la mémoire et la bande passante, pour n’en citer que quelques-unes, à l’aide de la commande :
$ lxc info tec-container1
Étape 9 : Obtenez un accès Shell à un conteneur LXC
Vous pouvez obtenir un accès bash à un conteneur en utilisant la syntaxe :
$ lxc exec container-name name-of-the-shell
Pour accéder au shell tec-conteneur1, nous exécuterons la commande :
$ lxc exec tec-container1 bash
Une fois que vous avez obtenu l’accès au shell, vous pouvez commencer à interagir avec le conteneur en tant qu’utilisateur root en exécutant des commandes shell courantes, y compris la mise à jour du système, comme indiqué :
$ apt update
Pour quitter le conteneur, exécutez la commande :
$ exit
Alternativement, vous pouvez exécuter les commandes directement sur le conteneur sans accéder au shell en utilisant le format suivant :
$ lxc exec container-name command
Par exemple, vous pouvez exécuter les commandes suivantes qui mettront à jour les listes de paquets, vérifieront la version du système d’exploitation exécuté sur le conteneur Debian et vérifieront la date.
$ lxc exec tec-container1 apt update $ lxc exec tec-container1 cat /etc/debian_version $ lxc exec tec-container1 date
Étape 10 : Extraire/pousser un ou plusieurs fichiers vers un conteneur LXC
Une autre opération que vous pouvez effectuer consiste à transférer des fichiers vers et depuis le conteneur. Pour le démontrer, nous allons créer un nouveau répertoire dans le LXD conteneur et naviguez dedans.
# mkdir data && cd data
Ensuite, nous allons créer un exemple de fichier et ajouter des données. Pour ce faire, nous allons créer un exemple de fichier avec vigueur éditeur
# vim file1.txt
Ensuite, nous allons taper un exemple de texte et enregistrer le fichier.
Hello World, Welcome to LXD containers.
Pour extraire le fichier du conteneur vers le système hôte local, nous utiliserons la syntaxe :
$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}
Dans ce cas, la commande sera :
$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint
Pour envoyer ou copier un fichier du répertoire local vers le conteneur, utilisez la syntaxe :
$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/
Dans ce cas, nous avons un exemple de fichier dans le répertoire personnel appelé fichier2.txt étant copié sur le /racine/données/ chemin dans le tec-conteneur2 récipient.
$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Pour confirmer l’existence du fichier dans le conteneur, nous exécuterons :
$ lxc exec tec-container2 ls /root/data
Étape 11 : Arrêter/Démarrer/Redémarrer et Supprimer les conteneurs LXC
Avec le lxc utilitaire de ligne de commande, vous pouvez effectuer des tâches de gestion de conteneurs telles que l’arrêt, le démarrage, le redémarrage et la suppression de conteneurs.
Pour arrêter un lxc conteneur, utilisez la syntaxe :
$ lxc stop container-name
Par exemple, pour arrêter tec-conteneur1, nous exécuterons la commande :
$ lxc stop tec-container1
Pour démarrer le lxc conteneur, utilisez la syntaxe :
$ lxc start container-name
Par exemple, pour commencer tec-conteneur1, nous exécuterons :
$ lxc start tec-container1
Pour redémarrer les deux lxc conteneurs, nous exécuterons la commande :
$ lxc restart tec-container1 $ lxc restart tec-container2
Pour supprimer un lxc conteneur, vous devez d’abord arrêter le conteneur puis le supprimer. Par exemple, pour supprimer, nous exécuterons les commandes :
$ lxc stop tec-container1 $ lxc delete tec-container1
Alternativement, vous pouvez combiner ces deux commandes comme indiqué.
$ lxc stop tec-container1 && lxc delete tec-container1
Étape 12 : obtenir de l’aide sur les options de ligne de commande LXC
Pour obtenir de l’aide sur les autres options de commande fournies par LXC, exécutez simplement la commande :
$ lxc --help OR $ lxc command --help e.g $ lxc file --help
Conclusion
C’était une plongée profonde dans LXD conteneurs et comment vous pouvez les créer et les gérer en utilisant le lxc outil utilitaire en ligne de commande. Nous espérons que vous avez trouvé ce guide utile.
.