Qu'appelle-t-on des conteneurs ?
Cloud et données Leadspace
Conteneurs

Ce guide examine l'importance des conteneurs dans le cloud computing, met en évidence leurs principaux avantages et analyse l'écosystème émergent des technologies associées aux conteneurs pour Docker, Kubernetes, Istio et Knative.

Conteneurs dans l'entreprise

Lire le livre électronique (PDF, 1,4 Mo)


Qu'appelle-t-on des conteneurs ?

Les conteneurs sont des unités exécutables du logiciel dans lequel le code d'application est conditionné, avec leurs bibliothèques et leurs dépendances, de manière à pouvoir être exécuté n'importe où sur le bureau, sur des systèmes informatiques traditionnels 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 à une machine virtuelle, 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 plusieurs décennies avec des versions telles que FreeBSD Jails et AIX Workload Partitions, mais la plupart des développeurs modernes se souviennent de 2013 comme du début de l'ère moderne des conteneurs avec l'introduction de Docker.

Des technologies de l'information flexibles, résilientes et sécurisées pour votre cloud hybride

En savoir plus

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


Conteneurs vs machines virtuelles

Pour mieux comprendre ce qu'est un conteneur, il faut comprendre 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 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 individuel 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 "Conteneurs vs. VM : Quelle est la différence ?"


Avantages des conteneurs

Le principal avantage des conteneurs, notamment par rapport à une 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 élimine le besoin d'une instance complète du système d'exploitation par application et rend les fichiers des conteneurs petits et é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-native 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 puis exécuté sans avoir besoin d'être reconfiguré sur des ordinateurs portables, dans des environnements informatiques en cloud ou sur site.
  • Prise en charge du développement et de l'architecture modernes : En raison de la combinaison de leur portabilité/cohérence 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 DevOpssans serveur et microservices, qui sont créés à partir de déploiements de code réguliers par petites incrémentations.
  • 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. Là où les conteneurs vont encore plus loin, c'est que, étant donné qu'ils permettent également d'utiliser les architectures de microservices, les composants d'application peuvent être déployés et mis à l'échelle de manière plus précise, ce qui constitue une alternative intéressante à la mise à l'échelle d'une application monolithique entière lorsqu'un seul composant a du mal à supporter la charge.

Dans une récente enquête d'IBM (PDF, 1,4 Mo) , les développeurs et les responsables informatiques ont signalé de nombreux autres avantages liés à l'utilisation des conteneurs.

Télécharger le rapport complet : Conteneurs dans l'entreprise (PDF, 1,4 Mo)

Cas d'utilisation des conteneurs

Les conteneurs occupent une place de plus en plus importante, notamment dans les environnements cloud. De nombreuses entreprises envisagent même de remplacer les machines virtuelles par des conteneurs en tant que plateforme de calcul générale pour leurs applications et leurs charges de travail. Mais à l'intérieur de ce champ d'utilisation 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, à couplage lâche et pouvant être déployés indépendamment.
  • DevOps : la combinaison des microservices en tant qu'architecture et des conteneurs en tant que plateforme est une base commune pour de nombreuses équipes qui adoptent le DevOps comme méthode de création, de livraison 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ù, dans des environnements portables, sur site et en cloud, ils constituent une architecture sous-jacente idéale pour les scénarios de clouds hybrides et de multi-cloud dans lesquels les entreprises doivent gérer leurs opérations dans un mélange de plusieurs clouds publics en combinaison avec leur propre centre de données.
  • Modernisation et migration des applications : l'une des approches les plus courantes pour moderniser les applications consiste à les conteneuriser afin de pouvoir les migrer vers le cloud.

Conteneurisation

Les logiciels doivent être conçus et conditionné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 le packaging d'une application avec ses variables d'environnement, ses fichiers de configuration, ses bibliothèques et ses dépendances logicielles. Le résultat est une image de conteneur qui peut ensuite être exécutée sur une plateforme de conteneur. Pour plus informations, consultez cette vidéo sur "La conteneurisation expliquée" (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 individuel a commencé à se heurter à la complexité de la gestion de centaines (voire de milliers) de conteneurs dans un système distribué.

Pour relever ce défi, 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

Alors que de nombreuses plateformes d'orchestration de conteneurs (comme Apache Mesos, Nomad et Docker Swarm) ont été créées pour aider à relever ces défis, Kubernetes, un projet open source introduit par Google en 2014, est rapidement devenu la plateforme d'orchestration de conteneurs la plus populaire, et c'est celle sur laquelle la majorité du secteur s'est basée pour ses normes.

Kubernetes permet aux développeurs et aux opérateurs de déclarer l'état souhaité de leur environnement global de conteneurs par le biais de fichiers YAML. Kubernetes se charge ensuite d'établir et de gérer cet état, grâce à 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 de défaillance, l'équilibrage de charge, la mise à l'échelle automatique, les déploiements sans temps d'arrêt et bien d'autres choses encore.

Pour en savoir plus sur Kubernetes, Sai Vennam fait une présentation de Kubernetes dans la vidéo ci-dessous (10:59) :

Kubernetes est maintenant exploité par la Cloud Native Computing Foundation (CNCF), qui est un groupe industriel travaillant sous les auspices de la Linux Foundation.

 


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

Alors que les conteneurs continuent de s'imposer comme un moyen populaire de conditionner et d'exécuter des applications, 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, deux des projets les plus populaires 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 préoccupations en matière de gestion vont au-delà des considérations relatives au cycle de vie des conteneurs individuels et concernent la manière dont un grand nombre de petits services (souvent appelés "maillage de services") se connectent et se relient les uns aux autres. Istio a été créé pour permettre aux développeurs de gérer plus facilement les défis associés à la détection, au trafic, à la surveillance, à la sécurité, etc. Pour plus informations sur Istio, consultez "Qu'est-ce qu'Istio ?" et regardez la vidéo explicative sur Istio (05:06) :

Knative

Les architectures sans serveur continuent également de gagner en popularité, notamment au sein de la communauté cloud native. Le plus grand mérite de Knative est sa capacité à déployer des services conteneurisés en tant que fonctions sans serveur.

Au lieu de fonctionner en permanence et de répondre en cas de besoin (comme le fait un serveur), une fonction sans serveur peut "passer à zéro", ce qui signifie qu'elle ne fonctionne plus 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 intitulée "Qu'est-ce que Knative ?" (07:58) :


Conteneurs et IBM Cloud

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

En savoir plus sur les conteneurs sur IBM Cloud.

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

 


Solutions connexes

Stockage pour les conteneurs

Apportez un stockage persistant et des services de données avec une résilience des données aux conteneurs, avec IBM Storage for Red Hat OpenShift


Solutions de sécurité des conteneurs

Créer, déployer et surveiller les outils de sécurité des conteneurs partout


Conteneurs sur IBM Cloud

Exécutez des charges de travail conteneurisées avec le leadership de sécurité, l'innovation open source et les fonctionnalités d'entreprise d'IBM Cloud