Conteneurisation
Arrière-plan noir et bleu
Qu'est-ce que la conteneurisation ?

Découvrez l'histoire de la technologie de conteneurisation, les avantages de son utilisation et son lien avec la virtualisation.

La conteneurisation  consiste à conditionner du code logiciel avec uniquement les bibliothèques du  système d'exploitation  et les  dépendances  nécessaires à l'exécution du code. Ceci permet de créer un exécutable léger unique, appelé un conteneur, qui fonctionne de manière cohérente sur n'importe quelle infrastructure. Plus portables et plus économes en ressources que les  machines virtuelles , les conteneurs sont devenus les  unités de traitement  de facto  des applications  cloud natives  modernes.

La conteneurisation permet aux développeurs de créer et de déployer des applications plus rapidement et avec une plus grande sécurité. Avec les méthodes traditionnelles, le code est développé dans un environnement informatique spécifique. Son transfert vers un nouvel emplacement entraîne souvent des bugs et des erreurs. C'est par exemple le cas lorsqu'un développeur transfère du code à partir d'un ordinateur de bureau vers une machine virtuelle, ou à partir d'un système d'exploitation Linux vers un système d'exploitation Windows. La conteneurisation élimine ce problème en regroupant le code d'application avec les fichiers de configuration, les bibliothèques et les dépendances connexes nécessaires à son exécution. Ce package unique de logiciels, ou "conteneur", est extrait du système d'exploitation hôte. Il est donc autonome et devient portable, c'est-à-dire qu'il peut s'exécuter sur toute plateforme ou tout cloud sans problèmes.

Le concept de  conteneurisation  et d'isolation des processus est en fait vieux de plusieurs dizaines d'années, mais l'émergence en 2013 du moteur  open source  Docker  Engine, une  norme industrielle  pour les conteneurs, s'accompagnant d'outils de développement simples et d'une approche universelle du conditionnement, a accéléré l'adoption de cette technologie. Aujourd'hui, les organisations utilisent de plus en plus la conteneurisation pour créer de nouvelles applications et pour moderniser les applications existantes pour le cloud. Selon une enquête récente d'IBM  (PDF, 1,4 Mo), 61 % des répondants ayant adopté les conteneurs ont déclaré utiliser des conteneurs dans 50 % ou plus des nouvelles applications qu'elles avaient créées au cours des deux années précédentes. 64 % prévoient que 50 % ou plus de leurs applications existantes seront adaptées en conteneurs au cours des deux prochaines années.

Les conteneurs sont souvent qualifiés de "légers", car ils partagent le noyau du système d'exploitation de la machine et ne nécessitent pas l'association d'un système d'exploitation au sein de chaque application. Les conteneurs ont intrinsèquement une capacité inférieure à celle d'une machine virtuelle. Ils démarrent plus rapidement, ce qui permet d'exécuter un nombre de conteneurs bien plus élevé avec la même capacité de traitement qu'une seule machine virtuelle. Les rendements des serveurs s'en trouvent accrus, ce qui réduit leurs coûts et ceux des licences.

Surtout, la conteneurisation permet aux applications d'être "écrites une seule fois et exécutées partout". Cette portabilité accélère le développement, empêche de se retrouver prisonnier des fournisseurs cloud et apporte d'autres avantages notables tels que  l'isolation des défauts, la facilité de gestion, une sécurité simplifiée et plus encore (voir ci-dessous).

Pour une vue d'ensemble plus complète, regardez cette vidéo, "La conteneurisation expliquée":

Les conteneurs dans l'entreprise - La nouvelle recherche IBM documente l'essor de l'adoption des conteneurs et de Kubernetes.

Lire l'e-book (1,4 Mo)


Conteneurisation d'application

Les conteneurs encapsulent une application en tant que package exécutable unique de logiciels qui regroupe le code d'application et tous les fichiers de configuration, bibliothèques et dépendances connexes requis pour son exécution. Les applications conteneurisées sont "isolées" dans la mesure où elles ne sont pas regroupées dans une copie du système  d'exploitation. Un moteur d'exécution open source (tel que Docker) est installé sur le système d'exploitation de l'hôte . Il devient l'intermédiaire utilisé par les conteneurs pour partager un système d'exploitation avec d'autres conteneurs sur le même système informatique.

Les autres couches de conteneurs, comme les fichiers binaires et les bibliothèques communs, peuvent également être partagées entre plusieurs conteneurs. Ainsi, il n'est pas nécessaire d'exécuter un système d'exploitation dans chaque application . La capacité de chaque conteneur est donc plus réduite et il peut être démarré plus vite, ce qui accroît les rendements des serveurs. L'isolement des applications en tant que conteneurs réduit également le risque que tout code malveillant présent sur un conteneur n'impacte d'autres conteneurs ou n'envahisse le système hôte.

Parce qu'elles ont été extraites du système d'exploitation hôte, les applications conteneurisées sont portables et peuvent s'exécuter uniformément et de façon cohérente sur toute plateforme ou tout cloud. Les conteneurs peuvent être facilement transférés à partir d'un ordinateur de bureau vers une machine virtuelle ou à partir d'un système d'exploitation Linux vers un système d'exploitation Windows. Ils auront une exécution parfaitement homogène sur des infrastructures virtualisées ou sur des serveurs "bare metal" traditionnels, sur site  ou dans le cloud. Les développeurs de logiciels peuvent ainsi continuer à utiliser les outils et les processus avec lesquels ils sont le plus à l'aise.

Ce n'est pas un hasard si les entreprises adoptent rapidement la conteneurisation qu'elles considèrent comme une approche optimale du développement et de la gestion des applications. La conteneurisation permet aux développeurs de créer et de déployer des applications plus rapidement et de façon plus sûre, qu'il s'agisse d'une application monolithique classique (une application logicielle à un seul niveau) ou d'un microservice modulaire (un ensemble de services à couplage souple). De nouvelles applications cloud peuvent être créées en tant que microservices conteneurisés. Dans ce cas, une application complexe est décomposée en une série de plus petits services spécialisés et gérables. Les applications existantes peuvent être reconditionnées dans des conteneurs (ou des microservices conteneurisés) qui utilisent plus efficacement des ressources de traitement.

Combinez les meilleures caractéristiques de l'informatique cloud et traditionnelle - Les conteneurs sont la clé d'une stratégie de cloud hybride ouverte qui vous permet de créer et de gérer des charges de travail partout, sans dépendance vis-à-vis d'un fournisseur.

En savoir plus


Les avantages en détail

La conteneurisation offre des avantages significatifs aux développeurs et aux équipes de développement. Ces avantages sont les suivants:

  • Portabilité:  Un conteneur crée un module exécutable de logiciels qui est extrait du système d'exploitation hôte (et n'est donc ni lié ni dépendant). Il est portable et capable de fonctionner de façon uniforme et cohérente sur n'importe quel cloud ou plateforme. 
  • Agilité: Le moteur open source Docker Engine utilisé pour exécuter les conteneurs est à l'origine de la norme industrielle pour les conteneurs. Il fait appel à des outils de développement simples et à une approche universelle du conditionnement fonctionnant sous Linux et Windows. L'écosystème de conteneurs est désormais passé à des moteurs gérés par l'initiative OCI (Open Container Initiative). Les développeurs de logiciels peuvent continuer à utiliser des outils et des processus agiles ou DevOps qui leur permettent de développer et d'améliorer rapidement les applications.
  • Rapidité: Les conteneurs sont souvent qualifiés de "légers", car ils partagent le noyau du système d'exploitation de la machine et ne sont pas entravés par cette surcharge supplémentaire. Les serveurs sont plus performants, leurs coûts et celui des licences sont réduits. En parallèle, les démarrages sont plus rapides puisqu'il n'y a pas de système d'exploitation à amorcer.
  • Isolation des défauts: Chaque application conteneurisée est isolée et fonctionne indépendamment des autres. La défaillance d'un conteneur n'a pas d'incidence sur le fonctionnement continu d'autres conteneurs. Les équipes de développement peuvent identifier et corriger tout problème technique survenant dans un conteneur sans entraîner d'indisponibilité dans d'autres conteneurs. De plus, le moteur de conteneurs peut tirer parti de toutes les techniques d'isolement de sécurité des systèmes d'exploitation, telles que le contrôle d'accès SELinux, pour isoler les défaillances dans les conteneurs.
  • Efficacité: Les logiciels s'exécutant dans des environnements conteneurisés partagent le noyau du système d'exploitation de la machine. Les couches applicatives d'un conteneur peuvent être partagées entre tous les conteneurs. Les conteneurs ont intrinsèquement une capacité inférieure à celle d'une machine virtuelle. Ils démarrent plus rapidement, ce qui permet d'exécuter un nombre de conteneurs bien plus élevé avec la même capacité de traitement qu'une seule machine virtuelle. Les serveurs sont plus performants, ce qui réduit leurs coûts et ceux des licences.
  • Facilité de gestion: Une plateforme d'orchestration de conteneurs automatise l'installation, la mise à l'échelle et la gestion des charges de travail et des services conteneurisés. Les plateformes d'orchestration de conteneurs peuvent faciliter des tâches de gestion, telles que la mise à l'échelle des applications conteneurisées, le déploiement de nouvelles versions d'applications. Elles offrent en outre des fonctions telles que la surveillance, la consignation et le débogage. Kubernetes, qui est peut-être le système d'orchestration de conteneurs le plus populaire, est une technologie open source (dont le code open source a été initialement mis à disposition par Google, via son projet interne Borg) qui automatise dès le départ les fonctions de conteneurs Linux. Kubernetes fonctionne avec de nombreux moteurs de conteneurs, tels que Docker, mais également avec tout système de conteneurs conforme aux normes OCI (Open Container Initiative) en matière de formats d'image et d'environnements d'exécution.
  • Sécurité: L'isolement des applications en tant que conteneurs empêche par nature que l'invasion de code malveillant n'affecte d'autres conteneurs ou le système hôte. En outre, les droits de sécurité peuvent être définis de façon à bloquer automatiquement l'entrée de composants indésirables dans des conteneurs ou à limiter les communications avec des ressources inutiles.
Produits à la une

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


Types de conteneurisation

En raison de l'intérêt croissant porté aux solutions basées sur des conteneurs et de leur utilisation accrue, il s'est avéré nécessaire d'établir des normes relatives à la technologie des conteneurs et à l'approche du conditionnement du code logiciel. L'initiative OCI (Open Container Initiative), créée en juin 2015 par Docker et d'autres chefs de file de l'industrie, vise à promouvoir des normes et des spécifications ouvertes communes et minimales concernant la technologie des conteneurs. C'est pourquoi l'OCI contribue à élargir les choix en matière de moteurs open source. Les utilisateurs ne se retrouvent pas prisonniers de la technologie d'un fournisseur particulier, mais peuvent au contraire tirer parti des technologies certifiées OCI. Celles-ci leur permettent de créer des applications conteneurisées via un ensemble diversifié d'outils DevOps et les exécuter de façon uniforme sur la ou les infrastructures de leur choix.

Aujourd'hui, Docker est l'une des technologies de moteur de conteneur les plus connues et les plus utilisées, mais il en existe d'autres. L'écosystème se normalise via containerd et d'autres alternatives telles que CoreOS rkt, Mesos Containerizer, LXC Linux Containers, OpenVZ et crio-d. Les caractéristiques et les valeurs par défaut peuvent différer, mais adopter et exploiter les spécifications OCI au fur et à mesure de leur évolution garantit que les solutions ne sont pas tributaires d'un fournisseur, sont certifiées pour s'exécuter sur plusieurs systèmes d'exploitation et sont utilisables dans plusieurs environnements.


Microservices et conteneurisation

Les petits et grands éditeurs de logiciels adoptent les microservices, qu'ils considèrent comme une approche optimale du développement et de la gestion des applications. Ce choix contraste avec le modèle monolithique antérieur, qui consistait à combiner une application logicielle avec l'interface utilisateur associée et une base de données sous-jacente au sein d'une seule unité, sur une seule plateforme de serveur. Avec les microservices, une application complexe est décomposée en une série de services plus petits et plus spécialisés, chacun disposant de sa propre base de données et de sa propre logique métier. Les microservices communiquent ensuite entre eux via des interfaces communes (comme les API) et des interfaces REST (comme HTTP). Grâce aux microservices, les équipes de développement peuvent se concentrer sur la mise à jour de zones spécifiques d'une application sans l'impacter dans son ensemble, ce qui permet d'accélérer le développement, les tests et  le déploiement.

Les concepts à l'origine des microservices et de la conteneurisation sont similaires, car il s'agit dans les deux cas de pratiques de développement logiciel qui, pour l'essentiel, transforment les applications en ensembles de services ou de composants plus petits qui sont portables, évolutifs, efficaces et plus faciles à gérer.

En outre, les microservices et la conteneurisation donnent de bon résultats lorsqu'ils sont utilisés ensemble. Les conteneurs fournissent une encapsulation légère de toute application, qu'il s'agisse d'un monolithe traditionnel ou d'un microservice modulaire. Un microservice, développé dans un conteneur, bénéficie alors de tous les avantages inhérents à la conteneurisation : la portabilité en termes de processus de développement et la compatibilité avec plusieurs fournisseurs (sans aucune dépendance vis-à-vis d'un fournisseur), ainsi que l'agilité des développeurs, l'isolement des défaillances, l'efficacité des serveurs, l'automatisation de l'installation, la mise à l'échelle et la gestion, ainsi que des couches de sécurité, entre autres.

Les communications d'aujourd'hui sont en train de passer rapidement au cloud, où les utilisateurs peuvent développer rapidement et efficacement des applications. Les applications et les données cloud sont accessibles à partir de n'importe quel périphérique connecté à Internet, ce qui permet aux membres de l'équipe de travailler à distance et en déplacement. Les fournisseurs de services cloud gèrent l'infrastructure sous-jacente. Les entreprises n'ont donc pas besoin d'investir dans des serveurs et d'autres équipements. Elles bénéficient en outre de sauvegardes réseau automatisées pour une fiabilité supplémentaire. Les infrastructures cloud évoluent à la demande et peuvent ajuster dynamiquement les ressources informatiques, la capacité et  l'infrastructure, selon l'évolution des besoins des charges. En outre, les fournisseurs de services cloud mettent régulièrement à jour leurs offres et les utilisateurs ont un accès continu aux technologies innovantes les plus récentes.

Les conteneurs, les microservices et le cloud computing combinés permettent de faire passer le développement et la distribution d'applications à la vitesse supérieure, et d'obtenir des résultats auparavant impossibles avec les méthodologies et les environnements traditionnels. Ces approches de nouvelle génération ajoutent agilité, efficacité, fiabilité et sécurité au cycle de développement des logiciels, avec à la clé une distribution plus rapide des applications et des améliorations pour les utilisateurs finaux et le marché.

Pour étudier plus en détail les microservices, regardez la vidéo "What are Microservices?":


Sécurité

Les applications conteneurisées sont dotées d'un niveau intrinsèque de sécurité, car elles peuvent s'exécuter en tant que processus isolés et fonctionner indépendamment d'autres conteneurs. Si elles étaient véritablement isolées, le code malveillant ne pourrait pas affecter d'autres conteneurs ou envahir le système hôte. Or les couches applicatives d'un conteneur sont souvent partagées avec d'autres conteneurs. En termes d'efficacité des ressources, c'est un plus ; par contre, cela ouvre la voie à des interférences et à des violations de sécurité au sein des conteneurs. Il en est de même pour le système d'exploitation partagé, car plusieurs conteneurs peuvent être associés au même système d'exploitation hôte. Les menaces de sécurité à l'égard du système d'exploitation commun peuvent avoir un impact sur tous les conteneurs associés, et inversement, une violation au niveau d'un conteneur a la capacité d'envahir le système d'exploitation hôte.

Mais qu'en est-il de l'image du conteneur lui-même ? Comment les applications et les composants open source inclus dans un conteneur améliorent-ils la sécurité ? Les fournisseurs de technologie de conteneurs, comme Docker, continuent de s'attaquer activement aux problèmes de sécurité. La conteneurisation est basée sur une approche "sécurisée par défaut", selon le postulat que la sécurité doit être inhérente à la plateforme et non une solution déployée et configurée séparément. Ainsi, le moteur de conteneur prend en charge toutes les propriétés d'isolement par défaut inhérentes au système d'exploitation sous-jacent. Les droits de sécurité peuvent être définis pour bloquer automatiquement l'entrée de composants indésirables dans des conteneurs ou limiter les communications avec des ressources inutiles.

Par exemple, les espaces de nom Linux offrent une vue isolée du système à chaque conteneur, à savoir le réseau, les points de montage, les ID processus, les ID utilisateur, les communications inter-processus et les paramètres de nom d'hôte. Les espaces de nom peuvent être utilisés pour limiter l'accès à l'une de ces ressources via des processus au sein de chaque conteneur. En général, les sous-systèmes qui ne disposent pas de support d'espaces de nom ne sont pas accessibles à partir d'un conteneur. Les administrateurs peuvent facilement créer et gérer ces "contraintes d'isolement" sur chaque application conteneurisée via une interface utilisateur simple.

Les chercheurs travaillent à renforcer davantage la sécurité des conteneurs Linux. En outre, un large éventail de solutions de sécurité permet d'automatiser la détection des menaces et la réponse à celles-ci au sein d'une entreprise, de surveiller et d'appliquer la conformité aux normes sectorielles et aux politiques de sécurité, de garantir le flux sécurisé des données via des applications et des nœuds finaux, et bien plus encore.

Découvrez une stratégie permettant de mettre à l'échelle la sécurité des conteneurs dans les organisations de toute taille.


Virtualisation versus conteneurisation

Les conteneurs sont souvent comparés aux machines virtuelles, car ces deux technologies sont très performantes en terme de traitement, grâce à l'exécution de plusieurs types de logiciels (sous Linux ou Windows) dans un environnement unique. Toutefois, la technologie relative aux conteneurs présente des avantages considérables qui sont bien supérieurs à ceux de la virtualisation. Elle est appelée à devenir très vite la technologie privilégiée par les professionnels IT.

La technologie de virtualisation permet à plusieurs systèmes d'exploitation et applications logicielles de s'exécuter simultanément et de partager les ressources d'un seul ordinateur physique. Par exemple, une entreprise informatique peut exécuter à la fois sous Windows et Linux  ou plusieurs versions d'un système d'exploitation, ainsi que plusieurs applications sur le même serveur. Chaque application et ses fichiers, bibliothèques et  dépendances associés, y compris une copie du système d'exploitation, forment une machine virtuelle. L'exécution de plusieurs machines virtuelles sur une seule machine physique permet de réaliser des économies importantes au niveau des dépenses d'investissement et des coûts opérationnels et énergétiques.

Pour découvrir une présentation plus détaillée de la virtualisation, regardez la vidéo "Virtualization in 2019" et lisez le document "Virtualization: A Complete Guide."

La conteneurisation, quant à elle, utilise les ressources de traitement encore plus efficacement. Un conteneur crée un package exécutable unique de logiciels qui regroupe le code d'application et tous les fichiers de configuration, bibliothèques et dépendances connexes requis pour son exécution. Contrairement aux machines virtuelles, cependant, les conteneurs ne sont pas regroupés dans une copie du système d'exploitation. Le moteur d'exécution du conteneur est installé sur le système d'exploitation du système hôte, devenant ainsi l'intermédiaire via lequel tous les conteneurs du système informatique partagent le même système d'exploitation.

Comme on l'a indiqué, les conteneurs sont souvent qualifiés de "légers", car ils partagent le noyau du système d'exploitation de la machine et ne nécessitent pas l'association d'un système d'exploitation au sein de chaque application (comme c'est le cas avec une machine virtuelle). D'autres couches de conteneurs (fichiers binaires et bibliothèques communs) peuvent également être partagées entre plusieurs conteneurs. Leur capacité est donc plus réduite que celle d'une machine virtuelle et ils démarrent plus rapidement. Plusieurs conteneurs peuvent alors s'exécuter pour la même capacité de traitement qu'une seule machine virtuelle, ce qui permet d'améliorer les rendements des serveurs et de réduire les coûts liés aux serveurs et aux licences.


Conteneurisation et IBM Cloud

En résumé, avec la virtualisation, il n'est plus nécessaire de disposer d'un serveur complet pour une application. Avec la conteneurisation, il n'est plus nécessaire de disposer d'un système d'exploitation complet pour chaque application. La portabilité, l'agilité, l'isolement des défaillances, la facilité de gestion et la sécurité font partie des avantages de l'utilisation de la technologie de conteneurisation.

Une plateforme de conteneurs d'entreprise permet d'orchestrer plusieurs clouds publics et privés afin d'unifier vos environnements pour améliorer les performances commerciales et opérationnelles. Il s'agit d'un élément clé d'une stratégie de cloud hybride ouvert qui vous permet d'éviter de dépendre d'un fournisseur, de créer et d'exécuter des charges de travail n'importe où de manière cohérente, ainsi que d'optimiser et de moderniser l'ensemble de votre informatique.

Pour aller plus loin:

  • Déployez des grappes Kubernetes à haute disponibilité et entièrement gérés avec Red Hat OpenShift on IBM Cloud, un service OpenShift géré qui tire parti de l'envergure et de la sécurité d'IBM Cloud pour automatiser les mises à jour, la mise à l'échelle et la mise à disposition.
  • Déployez et exécutez des applications dans des environnements sur site, d'edge computing et de cloud public, quel que soit le fournisseur, grâce à IBM Cloud Satellite, une solution gérée de cloud distribué.
  • Simplifiez et consolidez vos lacs de données en déployant de manière transparente le stockage d'entreprise en conteneur dans les environnements sur site et dans le cloud public avec les solutions IBM de stockage dans le cloud hybride.
  • Simplifiez la gestion complexe de l'informatique hybride grâce aux services gérés IBM Cloud.

Commencez dès aujourd'hui avec un compte IBM Cloud.


Solutions connexes

Optimisez et modernisez toute votre IT

Une stratégie de cloud hybride ouverte qui permet de générer et de gérer des charges de travail depuis n'importe où, sans dépendance vis-à-vis d'un fournisseur.


Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud exploite OpenShift dans les environnements publics et hybrides afin d'offrir vitesse, réactivité sur le marché, évolutivité et fiabilité.


IBM Cloud Satellite

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


Solutions de stockage dans le cloud hybride

Déployez simplement et en toute transparence le stockage d'entreprise en conteneur dans des environnements de stockage sur site et sur le cloud, grâce au stockage dans le cloud hybride.


Services cloud

Simplifiez la gestion informatique hybride complexe pour plus de visibilité, de maniabilité et de flexibilité.