Conteneurs

menu icon

Conteneurs

Ce guide examine l'importance des conteneurs dans le cloud computing, met en évidence les principaux avantages et fait un tour d'horizon de l'écosystème émergent des technologies connexes dans Docker, Kubernetes, Istio et Knative.

Que sont les conteneurs ?

Les conteneurs sont des unités exécutables de logiciel dans lesquelles le code d'application est empaqueté, avec ses bibliothèques et ses dépendances, de manière commune, afin qu'il puisse être exécuté n'importe où, que ce soit sur un ordinateur de bureau, dans un système informatique traditionnel ou dans le cloud.

Pour ce faire, les conteneurs tirent parti d'une forme de virtualisation du système d'exploitation où les fonctions de ce dernier (dans le cas du noyau Linux, les espaces noms et les primitives cgroups) sont mises à profit pour isoler les processus et contrôler la quantité d'UC, de mémoire et de disque à laquelle ces processus ont accès.

Les conteneurs sont petits, rapides et portables car, contrairement aux machines virtuelles, ils n'ont pas besoin d'inclure un système d'exploitation invité dans chaque instance, et peuvent, au contraire, simplement exploiter les fonctionnalités et les ressources du système d'exploitation hôte.

Les conteneurs sont apparus il y a des décennies avec des versions comme 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 (VM)

Pour mieux comprendre un conteneur, il convient de savoir ce qui les distingue des machines virtuelles (VM) traditionnelles. Dans 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 que le système d'exploitation requiert pour s'exécuter, ainsi qu'une application et ses bibliothèques et dépendances associées.

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 uniquement 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 une analyse plus approfondie de cette comparaison, consultez « Conteneurs vs. Machines virtuelles : Quelle est la différence ? »

Avantages des conteneurs

Le principal avantage des conteneurs, notamment par rapport aux machines VM, est de fournir un niveau d'abstraction qui les rend légers et portables.

  • 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 pour chaque application et réduit la taille des fichiers des conteneurs et les rend économes en ressources. Leur taille réduite, notamment par rapport aux machines virtuelles, leur permet de démarrer rapidement et de mieux prendre en charge les applications cloud natives qui évoluent horizontalement.
  • Portables et indépendants de la plateforme : les conteneurs transportent toutes leurs dépendances avec eux, ce qui signifie qu'un logiciel peut être écrit une fois et exécuté sans avoir besoin d'être reconfiguré sur des ordinateurs portables, dans des environnements de cloud et sur site.
  • Prise en charge du développement et des architectures modernes : du fait de leur portabilité/cohérente de déploiement sur les plateformes et de leur petite taille, les conteneurs sont une solution idéale pour les modèles de développement et d'application modernes, tels que DevOps, la technologie sans serveur et les microservices, qui reposent sur des déploiements de code standard par petits incréments.
  • Améliore l'utilisation : Comme les machines virtuelles avant eux, les conteneurs permettent aux développeurs et aux opérateurs d'utiliser l'unité centrale et la mémoire des machines physiques plus efficacement. Les conteneurs vont encore plus loin dans la mesure où ils permettent aussi d'utiliser des architectures de microservices, des composants d'application qui peuvent être déployés et augmentés de manière plus granulaire, une alternative attrayante à la mise à l'échelle d'une application monolithique entière parce qu'un seul composant parvient difficilement à supporter la charge.

Dans une récente enquête IBM (PDF, 1,4Mo) les développeurs et les responsables informatiques soulignent de nombreux autres avantages de l'utilisation de conteneurs. Découvrez-les à l'aide de l'outil interactif ci-dessous :

Télécharger le rapport complet : Containers in the enterprise(PDF, 1,4 Mo)

Cas d'utilisation des conteneurs

Les conteneurs occupent une place de plus en 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 clés où les conteneurs sont particulièrement pertinents.

  • Microservices : Les conteneurs sont petits et légers, ce qui en fait une bonne solution pour les architectures de microservices, où les applications sont créées à partir de nombreux petits services, faiblement couplés et pouvant être déployés de manière indépendante.
  • 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 DevOps comme méthode de création, de distribution et d'exécution des logiciels.
  • Hybride, multicloud : Comme les conteneurs peuvent s'exécuter de manière cohérente n'importe où, dans des environnements portables, sur site et de cloud, ils constituent une architecture sous-jacente idéale pour les scénarios de cloud hybride et multiclouds, où les organisations se retrouvent à évoluer dans plusieurs clouds publics en combinaison avec leur propre centre de données.
  • Modernisation et migration des applications : L'une des approches les plus courantes de la modernisation des applications commence par leur conteneurisation, afin de pouvoir les migrer vers le cloud.

Conteneurisation

Les logiciels doivent être conçus et empaquetés différemment, afin de tirer parti des conteneurs, un processus communément appelé conténeurisation.

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. Pour plus d'informations, consultez cette vidéo « Containerization Explained (08:09) :

Orchestration de conteneurs avec Kubernetes

Lorsque les entreprises ont commencé à adopter les conteneurs, souvent dans le cadre d'architectures modernes et cloud natives, la simplicité du conteneur a commencé à se heurter à la complexité de la gestion de centaines (voire de milliers) de conteneurs dans un système réparti.

C'est dans ce contexte que l'orchestration de conteneur est apparue comme un moyen de gérer de grands volumes de conteneurs tout au long de leur cycle de vie, notamment :

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

Alors que de nombreuses plateformes d'orchestration de conteneur (comme Apache Mesos, Nomad et Docker Swarm) ont été créées pour relever ces défis, Kubernetes, un projet à code source ouvert introduit par Google en 2014, est rapidement devenu la plateforme d'orchestration de conteneurs de référence, et c'est celle sur laquelle la majorité du secteur s'est standardisée.

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. Kubernetes se charge ensuite d'établir et de maintenir cet état, grâce à des activités, telles que le déploiement d'un nombre spécifique d'instances d'une application ou d'une charge de travail donnée, le redémarrage de l'application en cas de défaillance, l'équilibrage de la charge, la mise à l'échelle automatique, les déploiements sans temps d'arrêt, etc.

Pour en savoir plus sur Kubernetes, écoutez Sai Vennam qui présente Kubernetes dans la vidéo ci-dessous (10:59) :

Kubernetes est désormais géré par la Cloud Native Computing Foundation (CNCF), un groupe industriel indépendant du fournisseur, sous les auspices de la Fondation Linux.

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

Alors que l'essor des conteneurs comme moyen de conditionner et d'exécuter des applications se poursuit, l'écosystème des outils et des projets conçus pour renforcer et étendre les cas d'utilisation en production continue de se développer. Outre Kubernetes, Istio et Knative sont deux des projets les plus courants de l'écosystème de conteneurs.

Istio

Lorsque les développeurs utilisent des conteneurs pour créer et exécuter des architectures de microservices, les préoccupations en matière de gestion ne se limitent pas aux considérations relatives au cycle de vie des conteneurs et concernent la manière dont un grand nombre de petits services, généralement appelés « maillage de services », s'interconnectent et font référence les uns aux autres. 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. Pour plus d'informations sur Istio, voir « Qu'est-ce que Istio ? » et regardez cette vidéo sur Istio (05:06) :

Knative

Les architectures sans serveur continuent également de gagner en popularité, notamment au sein de la communauté « cloud-natif ». Le plus remarquable dans Knative, c'est sa capacité à déployer des services conteneurisés en tant que fonctions sans serveur.

Au lieu de s'exécuter en permanence et de répondre lorsque cela est nécessaire (comme le fait un serveur), une fonction sans serveur peut « passer à zéro », ce qui signifie qu'elle ne s'exécute pas du tout, sauf si elle est sollicitée. 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 plus d'informations sur Knative, regardez cette vidéo « Qu'est-ce que que Knative » ?" (07:58) :

Conteneurs et IBM Cloud

Les services de conteneurs IBM Cloud reposent sur des technologies à code source ouvert pour faciliter et accélérer votre parcours vers le cloud. Créez des applications conteneurisées à l'aide d'outils d'intégration continue et de distribution continue (CI/CD). Orchestrez les conteneurs en utilisant des services Red Hat OpenShift ou Kubernetes gérés. Et modernisez les applications existantes avec le middleware IBM conteneurisé et les composants à code source ouvert dans IBM Cloud Paks.

En savoir plus sur les conteneurs sur IBM Cloud.

Inscrivez-vous pour obtenir un ID IBM et créer votre compte IBM Cloud.