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.
Lire le livre électronique (PDF, 1,4 Mo)
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.
En savoir plus
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
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 ?"
Le principal avantage des conteneurs, notamment par rapport à une VM, est de fournir un niveau d'abstraction qui les rend légers et portables.
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.
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.
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) :
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 :
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.
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.
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) :
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) :
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.
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
Créer, déployer et surveiller les outils de sécurité des conteneurs partout
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