LXD est décrit comme le gestionnaire de conteneurs et de machines virtuelles de nouvelle génération qui offre une solution immersive pour les systèmes Linux exécutés dans des conteneurs ou en tant que machines virtuelles.
Il fournit des images pour un nombre démesuré de distributions Linux avec 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 du client lxc ou un outil de 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 conçu avec la sécurité comme 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 pont et de tunnels entre 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 pouvant regrouper des milliers de conteneurs sur différents nœuds.
Qu'est-ce que LXC ?
À 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 suivantes du noyau pour gérer les processus :
- Espaces de noms du noyau :pid, mount, réseau uts et utilisateur.
- CGroups (groupes de contrôle).
- Chroots – Utilisation de pivot_root.
- Règles Seccomp.
- Profils SELinux et Apparmor.
Linuxcontainers.org est le projet parapluie derrière LXD et LXC . Son objectif est d'offrir une plate-forme de distribution et indépendante des fournisseurs pour les technologies de conteneurs Linux.
Après cette introduction, 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 :
- Installation de RHEL Linux
- Installation de CentOS Linux
- Installation de Rocky Linux
- Installation d'AlmaLinux
Étape 1 :Réglez SELinux sur le mode permissif
Dès le départ, nous allons commencer par configurer SELinux et en le réglant sur permissif. Mais avant cela, mettons à jour les packages système comme suit :
$ sudo dnf update
Pour définir SELinux à 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 confirmez 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 :Ajoutez les paramètres du noyau
Avant d'installer LXD , certains paramètres supplémentaires sont requis. Passez donc 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 manière la plus simple d'installer LXD sur RHEL 8 est de l'installer en un clin d'œil emballer. Mais d'abord, installons snap 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 snap principal prise de communication.
$ sudo systemctl enable --now snapd.socket
De plus, activez la prise en charge classique en créant un lien symbolique à partir de /var/lib/snapd/snap à /snap .
$ sudo ln -s /var/lib/snapd/snap /snap
Pour mettre à jour le snap chemins, redémarrez votre système.
$ sudo reboot
Étape 5 :Installer le gestionnaire de conteneurisation LXD
Il existe deux façons d'installer LXD d'un claquement . Vous pouvez installer la dernière version de LXD comme indiqué.
$ sudo snap install —-classic lxd
Vous pouvez également installer la dernière version stable de LTS 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 groupe.
$ sudo usermod -aG lxd $USER
Vérifiez que l'utilisateur a été ajouté au lxd groupe en répertoriant tous les groupes auxquels appartient l'utilisateur.
$ 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-pool avec le lvm option comme backend.
Pour vérifier le LXD environnement que vous venez de configurer, il existe un certain nombre de commandes que vous pouvez utiliser. Par exemple, pour afficher le profil LXD par défaut, exécutez :
$ lxc profile show default
Pour afficher les adaptateurs réseau et l'IPv4 et IPv6 adresses, exécutez :
$ lxc network list
Vous pouvez l'affiner 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 en outre obtenir des détails complexes sur le pool de stockage.
$ lxc storage show tec-pool
Pour répertorier l'exécution de 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 étiquettes des colonnes.
Étape 7 :Répertorier les images de conteneur LXC prédéfinies
Tout comme Docker , le 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 Rocky Linux , 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
Pour lancer lxc conteneurs, utilisez la syntaxe :
$ lxc launch images:{distro}/{version}/{arch} {container-name-here}
Ici, nous allons lancer 2 conteneurs :tec-container1 depuis Debian 10 et tec-container2 de Rocky Linux 8 .
$ lxc launch images:debian/10/amd64 tec-container1 $ lxc launch images:rockylinux/8/amd64 tec-container2
Pour lister le lxc conteneurs, exécutez la commande :
$ lxc list
La sortie affiche une multitude d'informations sur les conteneurs. Cela inclut le nom des conteneurs, l'état (en cours d'exécution ou arrêté) des 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 sonder 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-uns à l'aide de la commande :
$ lxc info tec-container1
Étape 9 :Obtenir 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 obtenir un accès shell à tec-container1 , nous allons lancer 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, notamment en mettant à jour le 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 packages, vérifieront la version du système d'exploitation exécutée 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 est de 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 vim éditeur
# vim file1.txt
Ensuite, nous allons saisir 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 pousser 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é file2.txt étant copié dans /root/data/ chemin dans le tec-container2 conteneur.
$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Pour confirmer l'existence du fichier dans le conteneur, nous lancerons :
$ 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-container1 , nous allons lancer la commande :
$ lxc stop tec-container1
Pour démarrer le lxc conteneur, utilisez la syntaxe :
$ lxc start container-name
Par exemple, pour démarrer tec-container1 , nous allons exécuter :
$ lxc start tec-container1
Pour redémarrer à la fois 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 lancerons 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 d'autres options de commande fournies par LXC , lancez 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 à l'aide de lxc outil utilitaire de ligne de commande. Nous espérons que vous avez trouvé ce guide utile.