GNU/Linux >> Tutoriels Linux >  >> Linux

Tout ce que vous devez savoir sur les conteneurs Linux (LXC)

Les microservices gagnent en popularité depuis le soulèvement du cloud. Des entreprises comme Amazon et Netflix utilisent des plates-formes cloud pour fournir leurs services les plus demandés. Les conteneurs sont au cœur de ces applications cloud natives. Un conteneur est un environnement isolé qui facilite les microservices et offre des avantages tels qu'une mise à l'échelle supérieure et un déploiement rapide. Il existe une énorme différence entre les machines virtuelles traditionnelles basées sur un hyperviseur telles que VMware et les services de virtualisation au niveau du système d'exploitation tels que Docker et Linux Containers (LXC). Dans ce guide, nous fournirons à nos lecteurs une connaissance pratique de LXC, un outil de virtualisation robuste au niveau du système pour Linux.

Guide tout-en-un pour maîtriser les conteneurs Linux

Si vous êtes un administrateur Linux qui souhaite en savoir plus sur LXC, ce guide est parfait pour vous. Dans cet article, nous décrivons les différentes fonctionnalités et avantages de LXC ainsi que le moment de le choisir par rapport à d'autres services de conteneurisation. Nous vous montrerons également comment installer et démarrer avec LXC.

Conteneurs Linux :fonctionnalités et principes de base

Alors, qu'est-ce que LXC ? Comme nous l'avons déjà dit, il s'agit d'un service de virtualisation qui nous permet de faire tourner des clusters d'environnements Linux isolés. Il offre un grand nombre d'avantages par rapport aux machines virtuelles monolithiques en réduisant la charge des ressources sur la machine hôte. Cela le rend idéal pour créer, tester et déployer des logiciels cloud natifs. LXC, contrairement à d'autres outils de virtualisation au niveau du système d'exploitation, fournit de bien meilleurs environnements Linux.

LXC n'utilise aucun mécanisme sophistiqué de contrôle des ressources comme les hyperviseurs. Au lieu de cela, il utilise les fonctionnalités de confinement de l'hôte fournies directement par le noyau Linux. Les principaux composants sur lesquels il s'appuie sont les espaces de noms et cgroups . Ils ont été ajoutés pour la première fois au noyau depuis la version 2.6.24. Le principe de conception principal des cgroups alias 'Groupes de contrôle' est de fournir une limitation des ressources, une hiérarchisation, une comptabilité et un contrôle. Les espaces de noms sont chargés de cacher l'espace de processus et les informations sur les ressources d'un conteneur aux autres.

De plus, LXC a également un support intégré pour diverses politiques de durcissement Linux telles que les profils Apparmor et SELinux ainsi que Chroots. Il fonctionne sur presque toutes les architectures et dans le cloud sans effort. De plus, vous pouvez démarrer n'importe quelle distribution Linux, quel que soit l'hôte. Alors, disons que votre machine hôte exécute Ubuntu. Vous pouvez facilement exécuter Red Hat ou CentOS sur cette machine à l'aide de conteneurs LXC.

LXC, contrairement à certains autres services de conteneurisation, ne peut pas exécuter Mac OS ou Windows. En effet, les conteneurs LXC reposent directement sur le noyau hôte. Donc, si vous souhaitez exécuter des applications qui nécessitent l'un de ces systèmes, vous devez envisager une plate-forme différente comme Docker. Dans l'ensemble, LXC est le plus adapté aux personnes qui ont besoin d'exécuter des environnements Linux isolés avec un minimum de ressources.

Conteneurs Linux contre Docker

- -

Si vous travaillez dans une équipe DevOps ou en tant que professionnel de la fiabilité du site, vous devriez déjà être familiarisé avec Docker. C'est la plate-forme de conteneurisation la plus populaire pour les applications cloud natives de nos jours. Ainsi, vous pouvez vous demander en quoi LXC diffère de Docker ou lequel d'entre eux est le meilleur. Comme pour toutes les technologies, la réponse dépend uniquement de vos cas d'utilisation. Néanmoins, nous donnerons un aperçu des différences entre ces deux plates-formes de virtualisation populaires.

Docker est une technologie relativement récente par rapport à LXC. En fait, il utilisait LXC sous le capot à ses débuts. Cependant, Docker a parcouru un long chemin depuis lors et a mis en place ses propres solutions. Désormais, la principale différence entre Docker et LXC réside dans leurs choix de conception. Docker met davantage l'accent sur la création d'applications. LXC, d'autre part, est conçu pour fournir des environnements virtuels Linux autonomes.

Les développeurs utilisent généralement Docker pour créer des applications qui peuvent être jetées dès qu'une nouvelle version arrive. Cependant, les applications qui utilisent LXC sont censées être persistantes. Vous pouvez vous connecter en ssh dans un conteneur LXC comme vous le feriez dans un hôte Linux distant et gérer l'environnement. Docker ne le permet pas et vous utiliserez des outils spécialisés pour gérer le déploiement et les tests. En fin de compte, vous pouvez utiliser l'un ou l'autre pour créer des applications cloud. Les gens choisissent généralement LXC plutôt que Docker lors de la création d'applications qui doivent être maintenues pendant une longue période.

LXC :Composants

Le runtime LXC se compose d'un ensemble de composants individuels. Cela inclut le noyau liblxc bibliothèque, un ensemble d'outils standard pour contrôler les conteneurs, divers modèles de distribution et plusieurs liaisons de langage pour l'API principale. La prise en charge des langues inclut Python, Go, Ruby, Lua et Haskell. De plus, il existe des dépendances matérielles sans lesquelles lxc ne s'installera pas, comme une bibliothèque C comme glibc, uclib ou bionic. LXC nécessite également la version du noyau 2.6.32 ou plus.

LXC :Type de virtualisation

Les conteneurs Linux (LXC) offrent un environnement de système d'exploitation nominal qui peut être utilisé pour exécuter des applications Linux ou des services réseau spécifiques. Il utilise directement le noyau du système hôte et, par conséquent, ne peut pas être exécuté sur des machines non Linux. Les utilisateurs peuvent choisir parmi un grand nombre de modèles de distribution pour leur conteneur, y compris, mais sans s'y limiter, Ubuntu, Fedora, Debian, Red Hat et CentOS.

Le principal avantage de ce type de conteneur est qu'il permet d'isoler les services sensibles. Vous pouvez utiliser ce type de virtualisation pour créer des environnements d'analyse de logiciels malveillants, de piratage éthique ou de tâches nécessitant un hôte autonome. Cependant, ce ne sont que les fins prévues. Ainsi, vous pouvez également exécuter tous les services arbitraires que vous exécutez habituellement sur votre machine Linux. Il s'agit d'un contraste frappant avec l'approche centrée sur les applications de Docker.

LXC :Support d'outillage

La prise en charge d'outils robustes est cruciale pour la gestion des applications cloud ainsi que des services autonomes. LXC offre un riche ensemble d'outils qui sont presque identiques à votre machine Linux traditionnelle. Ainsi, vous n'avez pas besoin d'installer d'outils de gestion fantaisistes pour gérer vos conteneurs LXC. Vous pouvez utiliser n'importe quel package Linux standard tel que ssh, htop, iptables et les tâches Linux Cron. Cela permet aux administrateurs de gérer et d'automatiser facilement les services conteneurisés.

De plus, lxc cli offre un ensemble complet d'outils pour créer, exécuter et gérer des conteneurs LXC à la volée. Vous apprendrez à l'installer et à utiliser les fonctions de base de ce guide. De plus, vous pouvez également utiliser des outils supplémentaires en utilisant la chaîne d'outils LXD. Nous parlerons de LXD en détail dans les sections suivantes. Dans l'ensemble, LXC ne limite pas la capacité de l'utilisateur à utiliser des packages Linux standard tout en offrant des outils spécialisés.

LXC :Écosystème

L'écosystème LXC est pratiquement identique à celui de Linux. Cela facilite le démarrage avec les conteneurs Linux qu'avec Docker ou rkt. Comme nous pouvons installer et exécuter tous les packages Linux standard dans ces conteneurs, il est facile à configurer et à entretenir. Ne soyez donc pas submergé lorsque vous découvrez qu'il n'y a pas besoin d'outils supplémentaires comme Kubernetes et Swarm pour LXC.

LXC :facilité d'utilisation

L'une des principales raisons du passage à des plates-formes conteneurisées à partir de machines virtuelles Linux est la facilité d'utilisation accrue. LXC prend une longueur d'avance en supprimant complètement la nécessité d'installer des packages monolithiques. Cela augmente non seulement la productivité, mais rend également le flux de travail beaucoup plus facile à gérer. Les conteneurs LXC sont livrés avec des systèmes d'initialisation individuels qui s'occupent de la configuration du système tout en maintenant une empreinte de ressources légère.

De plus, l'expérience utilisateur fluide et un écosystème mature font de LXC un bien meilleur choix que les machines virtuelles traditionnelles. Vous pouvez faire tourner un conteneur LXC en quelques minutes et y exécuter votre distribution Linux préférée. L'installation et la gestion des applications Linux sont aussi simples que de taper quelques commandes quotidiennes. Donc, si vous ne souhaitez pas apprendre un nouvel ensemble d'outils tout en étant capable d'exécuter des services isolés, les conteneurs LXC offrent une excellente option.

LXC :popularité

Il ne fait aucun doute que les conteneurs Linux manquent de la popularité dont jouit Docker. Cela découle de certains choix de conception concis, qui incluent l'incapacité d'exécuter des environnements Windows ou Mac OS, entre autres. Docker est plus léger que LXC et est donc plus évolutif. Cependant, LXC est beaucoup plus ancien que Docker et ses conteneurs sont nettement plus autonomes que Docker.

De plus, LXC convient parfaitement à la création d'environnements de test tels que des laboratoires d'analyse de logiciels malveillants, etc. Cela le rend beaucoup plus populaire parmi les professionnels de l'informatique expérimentés qui travaillent régulièrement sur des projets sensibles. LXC jouit également d'une plus grande popularité dans les industries qui développent et maintiennent des applications avec un long cycle de vie. Dans l'ensemble, bien qu'il manque de popularité par rapport à Docker ou rkt, LXC offre une sécurité accrue et une facilité de maintenance.

LXC :performances

Comme nous l'avons déjà dit, l'une des principales raisons pour lesquelles les gens utilisent des plates-formes conteneurisées plutôt que des machines virtuelles est la charge réduite des ressources. Ceci, à son tour, conduit à une performance bien supérieure. LXC offre une densité plus de 10 fois supérieure à celle des machines virtuelles traditionnelles telles que KVM (Kernel-based Virtual Machine). Cela signifie que vous pouvez exécuter jusqu'à 10 fois plus de conteneurs sur un seul hôte Linux par rapport aux machines invitées KVM.

De plus, les hyperviseurs sont également sujets à des problèmes de latence indésirables. Par rapport au KVM, LXC réduit la latence à 57 %. De plus, les conteneurs LXC se chargent beaucoup plus rapidement que les émulateurs virtuels soutenus par des hyperviseurs. Par exemple, les instances LXC se lancent 94 % plus rapidement par rapport à KVM. Ainsi, comme vous pouvez le constater, LXC améliore considérablement les performances en réduisant la charge des ressources et la latence. Et le temps de chargement plus rapide offre une expérience utilisateur fluide.

LXC :Intégration

L'un des principaux avantages des conteneurs Linux est qu'ils s'intègrent très bien aux logiciels existants. Vous n'êtes pas limité à utiliser uniquement des applications Linux traditionnelles avec LXC. Par exemple, nous pouvons utiliser à la fois LXC et Docker en complément l'un de l'autre. Cela signifie que vous pouvez simplement héberger vos microservices Docker dans une instance LXC pour leur fournir une meilleure isolation et des caractéristiques de type VM. Cela rend extrêmement pratique l'exécution et la gestion des applications Docker.

De plus, cela supprime également la limitation de l'exécution d'applications natives Linux uniquement. Ainsi, nous pouvons facilement créer un microservice Docker sur Windows ou Mac et l'exécuter depuis un conteneur Linux. C'est une méthode vraiment chouette. LXC convient également à OpenStack, une plate-forme de cloud computing populaire. Il est utilisé par un grand nombre de leaders de l'industrie et est généralement déployé en tant qu'IaaS (Infrastructure-as-a-Service). Cela facilite plus que jamais le déploiement et la gestion des applications cloud.

LXC :Migration

La migration est cruciale pour de nombreux administrateurs, et LXC fournit un support adéquat à cet égard. Il existe plusieurs façons de migrer un conteneur Linux d'un hôte à un autre. Vous pouvez également effectuer une migration en direct, mais avec certaines limitations. Le moyen le plus simple de migrer un conteneur vers une plate-forme différente consiste à effectuer une sauvegarde et à la restaurer sur la machine cible, physiquement ou à distance via ssh.

Vous pouvez également migrer un conteneur à l'aide de l'API LXD et du protocole Simplestreams. Nous allons parler de LXD dans la section suivante. Alors ne vous inquiétez pas si vous ne le savez pas déjà. Nous n'entrerons pas trop dans les détails de chaque étape du processus de migration. Nous couvrirons peut-être cela dans un autre guide. Pour l'instant, vous pouvez trouver plus d'informations sur le site Web d'Ubuntu concernant la migration en direct. Stéphane Graber, le développeur principal de LXC, a également couvert la migration de LXC sur son site Web.

LXC :Assistance

Comme pour toute nouvelle plate-forme, le support aux entreprises est très important. Heureusement, LXC fournit un service de premier ordre à cet égard. Ainsi, que vous utilisiez des conteneurs Linux à des fins personnelles ou professionnelles, vous êtes assuré d'obtenir une assistance supplémentaire chaque fois que vous en avez besoin. De plus, puisque LXC est développé par Canonical, la société à l'origine d'Ubuntu et d'autres logiciels open source populaires. Ainsi, la qualité du service est aussi meilleure que possible.

Canonical propose également une assistance commerciale aux entreprises qui souhaitent utiliser LXC pour leurs applications cloud natives. Cependant, il est également fourni pour les versions d'Ubuntu LTS. Les versions 2.0 et 3.0 de LXC sont des versions de support à long terme. Donc, si vous voulez avoir des conteneurs stables sur toutes vos plateformes, vous devez vous en tenir à ces versions. La prise en charge d'autres modèles de distribution dépend généralement de cette distribution spécifique.

LXD :Premiers pas

LXC a commencé comme une interface d'espace utilisateur qui permet d'accéder aux fonctionnalités de confinement intégrées du noyau Linux. Il est plus que capable de ses tâches. Cependant, avec l'émergence de Docker et de son puissant écosystème, les développeurs se sont concentrés sur le développement d'une plate-forme plus mature. Le résultat est LXD, un système de gestion de conteneurs robuste qui peut fournir une expérience de type machine virtuelle mais en utilisant des conteneurs LXC.

LXD est basé sur des images, un peu comme les images Docker. Il implémente également une API REST simple mais puissante pour interagir facilement avec les services. Cette API se connecte au système local à l'aide d'un socket Unix et peut également être connectée à distance via des protocoles réseau standard.

Certaines des fonctionnalités de LXD incluent une sécurité accrue, l'évolutivité, l'expérience utilisateur, la migration en direct, le contrôle avancé des ressources, la gestion du réseau et la gestion du stockage. Dans l'ensemble, LXD est un complément à LXC, pas un remplacement. Il utilise LXC sous le capot et supprime simplement les détails de bas niveau.

Installation et utilisation de LXC

Nous avons discuté des mérites des conteneurs Linux dans les moindres détails. Maintenant, il est temps de se salir les mains et de commencer à utiliser cette technologie géniale. Mais d'abord, vous devez installer LXC sur votre machine.

Nous montrons comment installer LXC sur une machine Linux standard. Vous apprendrez à installer LXC sous Linux et à créer des conteneurs à l'aide de la CLI. Ouvrez simplement votre émulateur de terminal Linux préféré et tapez la commande suivante.

$ sudo apt-get install lxc

Cela installera la CLI lxc sur votre machine locale. Une fois cela fait, vous aurez accès à toutes les commandes lxc ainsi qu'aux modèles de distribution nécessaires pour construire et exécuter des conteneurs. Vous pouvez maintenant créer un conteneur de base à l'aide de la commande simple suivante.

$ lxc-create -t <template> -n <container name>

Le -t flag spécifie le nom du modèle, et le -n flag spécifie le nom du conteneur. Cette commande créera le conteneur en fonction du modèle de distribution donné. Utilisez la commande ci-dessous pour afficher une liste de tous les modèles disponibles.

$ ls /usr/share/lxc/templates/

Ainsi, la commande ci-dessous crée un conteneur nommé test-container en utilisant le modèle Alpine.

$ lxc-create -t alpine -n test-container

Cela ira de l'avant et téléchargera les fichiers nécessaires à une installation Alpine. Cela devrait prendre un certain temps et affichera l'utilisateur et le mot de passe par défaut une fois terminé. Maintenant, vous pouvez démarrer le conteneur en utilisant la commande ci-dessous.

$ sudo lxc-start -n test-container

Utilisez la commande suivante pour vous connecter à ce conteneur en utilisant le nom d'utilisateur et le mot de passe par défaut.

$ sudo lxc-console -n test-container

Cela vous connectera au conteneur en cours d'exécution. Utilisez la combinaison de touches Ctrl+a+q pour vous déconnecter de ce conteneur. Vous pouvez également vous connecter au conteneur directement en tant que root en utilisant ce qui suit.

$ sudo lxc-attach -n test-container

Utilisez la commande ci-dessous pour consulter certaines des informations relatives à ce conteneur.

$ sudo lxc-info -n test-container

Il affichera le nom du conteneur à côté de son état, de son PID, de son adresse IP, de l'utilisation de la mémoire, de l'utilisation du processeur, etc. Si vous avez démarré plusieurs conteneurs, vous pouvez en afficher une liste en utilisant ce qui suit.

$ sudo lxc-ls

Pour arrêter un conteneur spécifique, utilisez la commande suivante.

$ sudo lxc-stop -n test-container

Vous pouvez également supprimer un conteneur de votre système si vous n'en avez plus besoin. Utilisez la commande ci-dessous à cette fin.

$ sudo lxc-destroy -n test-container

Cela effacera le conteneur de test ainsi que toutes ses configurations de votre environnement hôte. Rendez-vous sur la page de documentation de LXC pour plus de détails sur chaque commande disponible.

Installer et utiliser LXD

Comme nous en avons déjà discuté, LXD est un wrapper pour LXC avec une liste de fonctionnalités supplémentaires. Il s'agit essentiellement d'un système de gestion basé sur des images pour les conteneurs Linux. Vous pouvez installer lxd en utilisant la commande suivante.

$ sudo snap install lxd

Vous n'avez pas besoin d'installer LXC séparément si vous installez LXD. Outre le package snap, LXD est également disponible sous forme de packages Debian. Vous pouvez également l'installer à partir de la source. Maintenant, vous devez faire quelques trucs de configuration. La première consiste à ajouter /snap/bin/lxd au $PATH de votre système.

$ echo 'export PATH="/snap/bin/lxd:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

Vous devez maintenant initialiser la configuration de lxd. Exécutez simplement la commande de terminal Linux suivante pour ce faire.

$ sudo lxd init

Il vous demandera un tas d'options. Vous pouvez simplement sélectionner ceux par défaut pour votre maintenant. Une fois la configuration effectuée, vous pouvez maintenant créer votre premier conteneur. LXD crée des instances de conteneur à l'aide d'images. La commande ci-dessous affiche une liste des référentiels d'images disponibles. Vous pouvez ajouter de nouvelles sources d'images ainsi que les créer localement. Pour l'instant, nous nous en tiendrons aux télécommandes officielles.

$ sudo lxc launch images:alpine

Cette commande créera une instance en utilisant l'image alpine. C’est une image assez légère qui convient très bien à notre propos. Vous pouvez utiliser d'autres images si vous le souhaitez. Maintenant, vous pouvez utiliser la commande ci-dessous pour obtenir un shell sur ce conteneur nouvellement créé.

$ sudo lxc exec test-container /bin/sh

Si vous avez créé le conteneur basé sur une image Ubuntu, remplacez /bin/sh avec /bin/bash pour invoquer le shell bash. Vous pouvez également utiliser n'importe quel shell Linux standard tant que l'image du conteneur le prend en charge. Vous pouvez également exécuter une commande à l'intérieur du conteneur sans vous connecter à un shell.

$ sudo lxc exec test-container -- ip a

Cela imprimera l'adresse IP des interfaces du conteneur à l'aide de la commande Linux ip. Enfin, vous pouvez arrêter le conteneur de test à l'aide de la commande ci-dessous.

$ sudo lxc stop test-container

LXD prend en charge de nombreuses commandes supplémentaires pour les conteneurs Linux. Rendez-vous sur la page de documentation LXD pour plus de détails à ce sujet.

Fin des pensées

Les conteneurs Linux sont un excellent moyen d'implémenter des machines virtuelles légères sans aucun hyperviseur. Cela les rend hautement évolutifs et économes en ressources. De plus, LXC offre également une approche viable pour développer des applications cloud natives. La principale différence entre les conteneurs LXC et les conteneurs Docker est que LXC est centré sur le système d'exploitation, tandis que les conteneurs Docker sont centrés sur les applications.

Donc, si vous cherchez à créer un environnement de laboratoire personnel ou un service robuste prêt pour le cloud, considérez LXC comme une meilleure option que Docker ou rkt. Néanmoins, Docker reste un excellent choix pour la virtualisation des applications. Alors, consultez notre guide sur les commandes Docker quotidiennes si vous voulez essayer Docker.


Linux
  1. Tout ce que vous devez savoir sur Ubuntu 13.04

  2. Répertoire Linux tmp :tout ce que vous devez savoir

  3. Compression de fichiers Linux :tout ce que vous devez savoir

  4. Autorisations de fichiers Linux :tout ce que vous devez savoir

  5. Swappiness sous Linux :tout ce que vous devez savoir

Tout ce que vous devez savoir sur Black Lab Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux

Tout ce que vous devez savoir sur le lien physique sous Linux

Tout ce que vous devez savoir sur l'UID sous Linux

Tout ce que vous devez savoir sur le répertoire Linux /tmp