Rechercher

Français

Français

Connexion

Connexion/Inscription

Sites web

Conteneurs

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux® est un processus ou un ensemble de processus isolés du reste du système. Tous les fichiers nécessaires à leur exécution sont fournis par une image distincte, ce qui signifie que les conteneurs Linux sont portables et fonctionnent de la même manière dans les environnements de développement, de test et de production. Ainsi, ils sont bien plus rapides que les pipelines de développement qui s'appuient sur la réplication d'environnements de test traditionnels. En raison de leur popularité et de leur facilité d'utilisation, les conteneurs constituent également un élément essentiel de la sécurité informatique.


Pourquoi utiliser des conteneurs ?

Qu'est-ce qu'un conteneur

Imaginons que vous développez une application. Vous travaillez sur un ordinateur portable dont l'environnement présente une configuration spécifique. D'autres développeurs peuvent travailler sur des machines qui présentent des configurations légèrement différentes. L'application que vous développez s'appuie sur cette configuration et utilise des bibliothèques, des dépendances et des fichiers spécifiques. En parallèle, votre entreprise exploite des environnements de développement et de production qui sont standardisés sur la base de configurations qui leur sont propres et de l'ensemble des fichiers associés. Vous souhaitez émuler ces environnements autant que possible localement, mais sans avoir à payer les coûts liés à la recréation des environnements de serveur. Comment faire pour que votre application en développement puisse fonctionner dans ces environnements, passer l'assurance qualité et être déployée sans prise de tête, sans réécriture et sans correctifs ? La réponse est simple : il vous suffit d'utiliser des conteneurs.

Le conteneur qui accueille votre application contient tous les fichiers, bibliothèques et dépendances nécessaires. Vous pouvez ainsi le déplacer jusqu'en production sans aucun effet secondaire. Les éléments qui composent l'image d'un conteneur sont analogues à ceux de l'installation d'une distribution Linux, car cette image est fournie avec tous ses paquets RPM, fichiers de configuration, etc. Cependant, il est bien plus simple de distribuer des images de conteneurs que d'installer une nouvelle version d'un système d'exploitation. La crise est évitée, le travail peut continuer.

C'est un exemple simplifié, mais les conteneurs Linux peuvent aussi être utilisés pour résoudre des problèmes liés à des situations qui nécessitent un haut niveau de portabilité, de configurabilité et d'isolation. Les conteneurs Linux permettent de développer plus rapidement des applications et de répondre aux besoins métier dès leur émergence. Dans certains cas, tels que la diffusion de données en temps réel avec Apache Kafka, les conteneurs sont essentiels parce qu'ils constituent le seul moyen de fournir l'évolutivité nécessaire aux applications. Quelle que soit l'infrastructure (sur site, dans le cloud ou hybride), les conteneurs répondent à la demande. Bien sûr, le choix de la plateforme de conteneurs est aussi important que les conteneurs eux-mêmes.


Ne s'agit-il pas tout simplement de virtualisation ?

Pas tout à fait. Les conteneurs et la virtualisation sont plutôt complémentaires. Voici deux définitions simples pour y voir plus clair :

  • La virtualisation permet à vos systèmes d'exploitation (Windows ou Linux) de s'exécuter simultanément sur un seul système matériel.
  • Les conteneurs partagent le même noyau de système d'exploitation et isolent les processus de l'application du reste du système. Par exemple : les systèmes Linux ARM exécutent des conteneurs Linux ARM, les systèmes Linux x86 exécutent des conteneurs Linux x86 et les systèmes Windows x86 exécutent des conteneurs Windows x86. Les conteneurs Linux sont extrêmement portables, mais ils doivent être compatibles avec le système sous-jacent.

virtualisation et conteneurs

Qu'est-ce que cela signifie ? En premier lieu, la virtualisation utilise un hyperviseur pour émuler le matériel, ce qui permet d'exécuter plusieurs systèmes d'exploitation en parallèle. C'est une solution moins légère que les conteneurs. Lorsque vous disposez de ressources limitées, aux fonctionnalités limitées, il est nécessaire que vos applications soient légères et puissent être déployées de manière dense. Les conteneurs Linux s'exécutent en natif sur leur système d'exploitation, qu'ils partagent entre eux. Vos applications et services restent ainsi légers et s'exécutent rapidement en parallèle.

Les conteneurs Linux représentent une nouvelle évolution de la manière selon laquelle nous développons, déployons et gérons des applications. Les images de conteneurs Linux permettent d'assurer la portabilité et le contrôle des versions des applications. Les développeurs ont ainsi la garantie que ce qui fonctionne sur leur ordinateur portable fonctionnera aussi dans l'environnement de production. Un conteneur Linux mobilise moins de ressources qu'une machine virtuelle. Il propose une interface standard (démarrage, arrêt, variables d'environnement, etc.), assure l'isolation des applications et peut être géré plus facilement en tant que module d'une application plus importante (plusieurs conteneurs). En outre, ces applications à plusieurs conteneurs peuvent être orchestrées dans différents clouds.


LXC, qu'est-ce que c'est ?

Le projet Linux Containers (LXC) est une plateforme de conteneurs Open Source qui fournit un ensemble d'outils, de modèles, de bibliothèques et de liaisons de langage. Le projet LXC dispose d'une interface en ligne de commande simple qui facilite la prise en main pour les nouveaux utilisateurs.

Il contient un environnement de virtualisation au niveau du système d'exploitation qu'il est possible d'installer sur de nombreux systèmes basés sur Linux. Vous pouvez peut-être y accéder dans le référentiel du package de votre distribution Linux.


Petite histoire des conteneurs

Évolution des conteneurs - télécharger

La technologie que nous appelons aujourd'hui « conteneurs » est apparue en 2000 sous le nom de FreeBSD Jails et permettait à l'époque de partitionner un système FreeBSD en plusieurs sous-systèmes ou « jails » (prisons, en français). Les systèmes jails étaient développés comme des environnements sécurisés qu'un administrateur système pouvait partager avec plusieurs utilisateurs opérant à l'intérieur ou à l'extérieur d'une entreprise.

En 2001, Jacques Gélinas a créé le projet VServer, rendant possible la mise en œuvre d'un environnement isolé sur un serveur Linux. Une fois cette base posée pour l'exploitation de plusieurs espaces utilisateurs contrôlés, toutes les pièces se sont mises en place pour former les conteneurs Linux que l'on connaît aujourd'hui.

Très rapidement, d'autres technologies se sont greffées aux conteneurs pour concrétiser cette approche de l'isolement. La fonction du noyau cGroups (groupes de contrôle) permet de contrôler et de limiter l'utilisation des ressources pour un processus ou un groupe de processus. Le système d'initialisation systemd permet de définir l'espace utilisateur et de gérer les processus associés. Il est utilisé par la fonction cgroups pour améliorer le contrôle sur ces processus isolés. Ces deux technologies, qui permettent de mieux contrôler Linux, ont servi de base pour pouvoir exécuter des environnements bien qu'ils soient séparés.

L'avènement de Docker

En 2008, la technologie de conteneurs Docker a fait son apparition (via dotCloud). Cette technologie a apporté de nombreux nouveaux concepts et outils : une interface en ligne de commande simple pour l'exécution et la création de nouvelles images à couches, un démon de serveur, une bibliothèque d'images de conteneurs prédéfinies et le principe d'un serveur de registre. Ensemble, toutes ces technologies ont permis aux utilisateurs de créer rapidement de nouveaux conteneurs à couches et de les partager facilement entre eux.

Trois normes majeures assurent l'interopérabilité des technologies de conteneurs : les spécifications OCI Image, Distribution et Runtime. Ensemble, ces spécifications permettent aux projets communautaires, aux produits commerciaux et aux fournisseurs de cloud de développer des technologies de conteneurs interopérables (qui vous permettent, par exemple, de faire fonctionner vos images créées sur mesure sur le serveur de registre d'un fournisseur de cloud). Aujourd'hui, Red Hat et Docker font partie des nombreux membres de l'Open Container Initiative (OCI) et contribuent à la création de normes ouvertes pour les technologies de conteneurs à l'échelle du secteur.


Qu'en est-il de la sécurité des conteneurs ?

Les conteneurs ont du succès, mais sont-ils sécurisés ? La sécurité des conteneurs est un sujet complexe, puisqu'il est nécessaire de protéger le pipeline et l'application du conteneur, ainsi que les environnements et l'infrastructure de déploiement, sans compter l'intégration à prévoir aux outils et politiques de sécurité propres à chaque entreprise. Il est donc indispensable d'avoir un plan. Red Hat est là pour vous accompagner.


Nous pouvons vous aider.

Nous collaborons depuis des années avec la communauté Open Source pour concevoir des technologies sécurisées, stables et fiables, telles que les conteneurs. C'est notre mission. Bien sûr, nous proposons des services d'assistance pour ces technologies. Donc si vous avez besoin d'aide, n'hésitez pas à faire appel à nous.

Choisissez les technologies Red Hat pour déployer des conteneurs correctement du premier coup. Les solutions Red Hat répondent à vos besoins, quel que soit votre projet : offrir à vos équipes de développement une plateforme compatible avec les conteneurs, exécuter votre infrastructure de conteneurs sur un système d'exploitation de pointe ou mettre en place des solutions de stockage pour les gros volumes de données générées par les conteneurs.

Vous ne savez pas encore tout sur les conteneurs...