Que sont les conteneurs ?
Découvrez l'importance des conteneurs dans le cloud computing, leurs principaux avantages et l'écosystème émergent des technologies associées, notamment Docker, Kubernetes, Istio et Knative
S'abonner au bulletin d'information IBM
Arrière-plan noir et bleu avec des formes géométriques groupées
Que sont les conteneurs ?

Les conteneurs sont des unités de logiciel exécutables dans lequel le code d'application est regroupé avec ses bibliothèques et ses dépendances, afin que le code puisse être exécuté n'importe où, que ce soit sur un ordinateur de bureau, dans l'informatique traditionnelle ou dans le cloud.

Pour ce faire, les conteneurs tirent parti d'une forme de virtualisation du système d'exploitation (OS) dans laquelle les fonctions du noyau de l'OS (par exemple, les espaces de noms et les cgroups de Linux, les silos et les objets de travail de Windows) peuvent être exploitées pour isoler les processus et contrôler la quantité de processeur, de mémoire et de disque à laquelle ces processus peuvent avoir accès.

Les conteneurs sont petits, rapides et portables car, contrairement à une machine virtuelle, ils n'ont pas besoin d'inclure un système d'exploitation invité dans chaque instance et peuvent simplement exploiter les fonctions et les ressources du système d'exploitation hôte.

Les conteneurs sont apparus il y a plusieurs décennies avec des versions telles que FreeBSD Jails et AIX Workload Partitions, mais la plupart des développeurs actuels se souviennent de 2013 comme du début de l'ère moderne des conteneurs avec l'introduction de Docker.

Conteneurs et machines virtuelles

Pour mieux comprendre ce qu'est un conteneur, il faut savoir en quoi il diffère d'une machine virtuelle traditionnelle. Dans le cadre de la virtualisation traditionnelle, que ce soit sur site ou dans le cloud, un hyperviseur est utilisé pour virtualiser le matériel physique. Chaque machine virtuelle contient alors un système d'exploitation invité, une copie virtuelle du matériel dont le système d'exploitation a besoin pour fonctionner, ainsi qu'une application et ses bibliothèques et dépendances.

Au lieu de virtualiser le matériel sous-jacent, les conteneurs virtualisent le système d'exploitation (généralement, Linux) de sorte que chaque conteneur contient seulement l'application, ses bibliothèques et ses dépendances. L'absence de système d'exploitation invité explique pourquoi les conteneurs sont si légers et donc, rapides et portables.

Pour un examen plus approfondi de cette comparaison, consultez « Différence entre les conteneurs et les machines virtuelles ».

Avantages des conteneurs

Le principal avantage des conteneurs, notamment par rapport à une VM, réside dans le niveau d'abstraction qui les rend légers et portables. Principaux avantages des conteneurs :

Légers : les conteneurs partagent le noyau du système d'exploitation de la machine, ce qui évite d'utiliser une instance complète du système d'exploitation par application et permet d'utiliser de petits fichiers de conteneur économes en ressources. Du fait de leur petite taille, notamment par rapport aux machines virtuelles, les conteneurs démarrent rapidement et prennent plus efficacement en charge les applications cloud natives qui sont mises à l'échelle horizontalement.

Portables et indépendants de la plateforme : les conteneurs transportent toutes leurs dépendances, ce qui signifie qu'un logiciel peut être écrit une fois, puis exécuté sans avoir à le reconfigurer sur des ordinateurs portables, dans des environnements informatiques de cloud ou sur site.

Prise en charge du développement et d'architecture modernes : du fait de leur portabilité/cohérence de déploiement entre les plateformes et de leur petite taille, les conteneurs conviennent parfaitement aux modèles de développement et d'applications modernes, tels que DevOps, l'informatique sans serveur et les microservices, qui sont créés en utilisant des déploiements de code réguliers par petits incréments.

Amélioration de l'utilisation : comme les machines virtuelles avant eux, les conteneurs permettent aux développeurs et aux opérateurs d'améliorer l'utilisation de l'UC et de la mémoire des machines physiques. Les conteneurs vont encore plus loin dans la mesure où ils permettent aussi d'utiliser une architecture de microservices, des composants d'application qui peuvent être déployés et mis à l'échelle de manière plus granulaire, une alternative intéressante à la mise à l'échelle verticale d'une application monolithique entière parce qu'un seul composant parvient difficilement à supporter sa charge.

Dans une récente enquête d'IBM (PDF de 1,4 Mo), les développeurs et les responsables informatiques indiquent de nombreux autres avantages des conteneurs.

Télécharger l'intégralité du rapport : Containers in the enterprise (PDF, 1,4 Mo)

Cas d'utilisation des conteneurs

Les conteneurs occupent une place toujours plus importante, notamment dans les environnements de cloud. De nombreuses organisations envisagent même de remplacer les machines virtuelles par des conteneurs en tant que plateforme informatique générale pour leurs applications et leurs charges de travail. Mais dans ce cadre très large, il existe des cas d'utilisation spécifiques dans lesquels les conteneurs sont particulièrement utiles.

  • Microservices : comme les conteneurs sont petits et légers, ils constituent une bonne solution pour les architectures de microservices, où les applications sont créées à partir de nombreux petits services faiblement couplés pouvant être déployés indépendamment.
  • DevOps : la combinaison des microservices en tant qu'architecture et des conteneurs en tant que plateforme constitue une base commune pour de nombreuses équipes qui adoptent le DevOps comme méthode de création, de distribution et d'exécution des logiciels.
  • Cloud hybride, multi-cloud : étant donné que les conteneurs peuvent s'exécuter de manière cohérente n'importe où, sur des ordinateurs portables, sur site et dans le cloud, ils forment une architecture sous-jacente idéale pour les scénarios de cloud hybride et multicloud dans lesquels les entreprises évoluent dans une combinaison de clouds publics et de centre de données propre.
  • Modernisation et migration des applications : l'une des approches les plus courantes de la modernisation des applications consiste à conteneuriser des applications en vue de leur migration vers le cloud.
Conteneurisation

Les logiciels doivent être conçus et regroupés différemment, afin de tirer parti des conteneurs, un processus communément appelé  « conteneurisation ».

Lors de la conteneurisation d'une application, le processus comprend l'empaquetage d'une application avec ses variables d'environnement, ses fichiers de configuration, ses bibliothèques et ses dépendances logicielles. Il en résulte une image de conteneur qui peut être ensuite exécutée sur une plateforme de conteneur.

Orchestration des conteneurs avec Kubernetes

Alors que les entreprises commençaient à adopter les conteneurs, souvent dans le cadre d'architectures modernes et « cloud natives », la simplicité du conteneur individuel a commencé à se heurter à la complexité de la gestion de centaines (voire de milliers) de conteneurs dans un système distribué.

Pour résoudre ce problème, l'orchestration de conteneurs est apparue comme un moyen de gérer de grands volumes de conteneurs tout au long de leur cycle de vie, notamment :

  • Provisionnement
  • Redondance
  • Surveillance de l'intégrité
  • Allocation des ressources
  • Mise à l'échelle et  équilibrage de charge
  • Déplacement entre les hôtes physiques

Si de nombreuses plateformes d'orchestration de conteneurs (comme Apache Mesos, Nomad et Docker Swarm) ont été créées, Kubernetes, un projet open-source introduit par Google en 2014, est rapidement devenu la plateforme d'orchestration de conteneurs la plus utilisée sur laquelle repose la standardisation de la majorité du secteur.

Kubernetes permet aux développeurs et aux opérateurs de déclarer l'état souhaité de leur environnement global de conteneurs au moyen de fichiers YAML, puis Kubernetes se charge de tout le travail de traitement pour établir et maintenir cet état, avec des activités telles que le déploiement d'un nombre spécifié d'instances d'une application ou d'une charge de travail donnée, le redémarrage de cette application en cas d'échec, l'équilibrage de la charge, la mise à l'échelle automatique, les déploiements sans interruption de service et bien plus.

Kubernetes est maintenant exploité par la Cloud Native Computing Foundation (CNCF), un groupe du secteur indépendant du fournisseur travaillant sous les auspices de la Linux Foundation.

La vidéo ci-dessous décrit le fonctionnement de Kubernetes :

Istio, Knative et l'écosystème des conteneurs en expansion

Alors que les conteneurs continuent sont toujours plus utilisés pour empaqueter et exécuter des applications, l'écosystème des outils et des projets conçus pour accueillir et étendre les cas d'utilisation en production continue de se développer. Outre Kubernetes, deux des projets les plus connus dans l'écosystème des conteneurs sont Istio et Knative.

Istio

Lorsque les développeurs utilisent des conteneurs pour créer et exécuter des architectures de microservices, les problèmes de gestion ne se limitent pas aux considérations relatives au cycle de vie des conteneurs individuels et portent sur la manière dont un grand nombre de petits services, généralement appelés « maillage de services », se connectent et interagissent. Istio a été créé pour permettre aux développeurs de gérer plus facilement les défis associés à la reconnaissance, au trafic, au contrôle, à la sécurité, etc. 

En savoir plus sur Istio

Knative

Les architectures sans serveur continuent également de connaître un grand succès, notamment au sein de la communauté cloud native. Knative, par exemple, apporte une valeur substantielle dans sa capacité à déployer des services conteneurisés et des fonctions sans serveur.

Au lieu de s'exécuter en permanence et de répondre en cas de besoin (comme le fait un serveur), une fonction sans serveur peut « passer à l'échelle zéro », ce qui signifie qu'elle ne s'exécute pas si elle n'est pas sollicité. Ce modèle permet d'économiser d'énormes quantités de puissance de calcul lorsqu'il est appliqué à des dizaines de milliers de conteneurs. 

Pour en savoir plus sur Knative, regardez la visite ci-dessous :

Solutions connexes
Red Hat® OpenShift® on IBM Cloud®

Red Hat OpenShift on IBM Cloud exploite OpenShift dans les environnements publics et hybrides, afin d'offrir la vitesse, la réactivité à l'évolution du marché, l'évolutivité et la fiabilité.

Découvrir Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite®

Avec IBM Cloud Satellite, vous pouvez lancer des services cloud cohérents n'importe où : sur site, à la périphérie et dans les environnements de cloud public.

Découvrir IBM Cloud Satellite
IBM Cloud Code Engine

Exécutez des images de conteneurs, des travaux par lots ou du code source en tant que charges de travail sans serveur, sans avoir à dimensionner, déployer, mettre en réseau ou mettre à l'échelle.

Découvrir IBM Cloud Code Engine
IBM Cloud Container Registry

IBM Cloud Container Registry fournit un registre privé pour gérer vos images et les surveiller à des fins de sécurité.

Découvrir IBM Cloud Container Registry
Ressources Conteneurs dans l'entreprise

Une nouvelle étude d'IBM montre que l'adoption des conteneurs et de Kubernetes est en plein essor.

Combiner les meilleures fonctions du cloud et de l'informatique traditionnelle

L'orchestration de conteneurs est un composant clé d'une stratégie de cloud hybride ouverte qui permet de générer et de gérer des charges de travail à partir de n'importe où.

Qu'est-ce que Docker ?

Docker est une plateforme open source qui permet de créer, de déployer et de gérer des applications conteneurisées.

Pour aller plus loin

Avec Red Hat OpenShift on IBM Cloud, les développeurs OpenShift disposent d'un moyen rapide et sécurisé de conteneuriser et de déployer des charges de travail d'entreprise dans des clusters Kubernetes. Grâce à lui, vous pouvez décharger les tâches fastidieuses et répétitives de gestion de la sécurité, de la conformité, du déploiement et du cycle de vie. Comme IBM gère OpenShift Container Platform (OCP), vous aurez davantage de temps pour vous consacrer aux tâches principales.

Découvrir Red Hat OpenShift on IBM Cloud