Jump to section

La conteneurisation, qu'est-ce que c'est ?

Copier l'URL

La conteneurisation consiste à rassembler le code du logiciel et tous ses composants (bibliothèques, frameworks et autres dépendances) de manière à les isoler dans leur propre « conteneur ».

Le logiciel ou l'application dans le conteneur peut ainsi être déplacé et exécuté de façon cohérente dans tous les environnements et sur toutes les infrastructures, indépendamment de leur système d'exploitation. Le conteneur fonctionne comme une sorte de bulle, ou comme un environnement de calcul qui enveloppe l'application et l'isole de son entourage. C'est en fait un environnement de calcul portable complet.

Avec les conteneurs, vous n'avez plus besoin de coder pour une plateforme ou un système d'exploitation en particulier, une méthode qui complique le déplacement des applications étant donné que le code n'est pas toujours compatible avec le nouvel environnement. De plus, ces transferts génèrent souvent des bogues, des erreurs et des problèmes qui font perdre du temps, diminuent la productivité et engendrent une grande frustration.

En plaçant une application dans un conteneur facile à déplacer entre les plateformes et infrastructures, vous pouvez l'utiliser n'importe où, car elle dispose de tout ce dont elle a besoin pour fonctionner.

L'idée d'isoler des processus n'est pas nouvelle, mais lorsque Docker a lancé Docker Engine en 2013, celui-ci a normalisé l'utilisation des conteneurs avec des outils faciles à utiliser pour les développeurs, et a établi une approche universelle de la mise en paquet qui a par la suite accéléré l'adoption des technologies de conteneurs. Aujourd'hui, il existe divers outils et plateformes de conteneurisation qui prennent en charge les normes de l'Open Container Initiative établies par Docker, notamment Podman, Buildah et Skopeo.

La « légèreté » ou portabilité des conteneurs découle de leur capacité à partager le noyau du système d'exploitation de la machine hôte. Ils n'ont pas besoin d'un système d'exploitation propre et les applications peuvent s'exécuter de la même manière sur toutes les infrastructures (systèmes bare metal, clouds et même machines virtuelles), comme nous le verrons dans la section suivante. 

De même, avec les conteneurs les développeurs peuvent utiliser les mêmes outils dans plusieurs environnements hôtes, ce qui simplifie sensiblement le développement et le déploiement des applications conteneurisées sur différents systèmes d'exploitation.

Une machine virtuelle est un environnement virtuel qui fonctionne comme un système informatique virtuel, avec son propre processeur, sa mémoire, son interface réseau et son espace de stockage, mais qui est créé sur un système matériel physique (situé sur site ou hors site).

La conteneurisation et la virtualisation permettent toutes les deux d'isoler complètement une application pour la rendre opérationnelle dans plusieurs environnements. Leurs principales différences résident dans le poids et la portabilité. 

Les machines virtuelles sont plus lourdes. Elles pèsent généralement plusieurs gigaoctets et intègrent leur propre système d'exploitation, ce qui leur permet d'exécuter simultanément plusieurs fonctions gourmandes en ressources. Grâce aux gros volumes de ressources auxquels elles ont accès, les machines virtuelles peuvent dissocier, séparer, dupliquer et émuler des serveurs, des systèmes d'exploitation, des postes de travail, des bases de données et des réseaux entiers.

Les conteneurs sont bien plus légers. Leur poids se mesure en mégaoctets et ils ne contiennent rien de plus gros qu'une application et son environnement d'exécution. 

Les machines virtuelles fonctionnent bien sur les architectures monolithiques classiques, tandis que les conteneurs sont compatibles avec les technologies émergentes telles que le cloud computing, l'approche CI/CD et le DevOps

Les conteneurs sont souvent utilisés pour isoler des fonctions uniques qui effectuent des tâches spécifiques : les microservices. Les microservices sont le produit de la décomposition des applications en services plus petits et plus spécialisés. Ils permettent aux développeurs de travailler sur une partie spécifique d'une application sans affecter ses performances globales. 

Ainsi, les applications restent en service pendant leur mise à jour ou leur correction, ce qui accélère les améliorations, les tests et le déploiement. 

Les microservices fonctionnent très bien en conteneurs, car dans un conteneur, un microservice profite de la portabilité, de la compatibilité et de l'évolutivité de celui-ci. 

Comment gérer tous ces conteneurs ? Grâce à l'orchestration des conteneurs. L'orchestration des conteneurs consiste à automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs. 

Kubernetes est une plateforme Open Source d'orchestration des conteneurs qui facilite la gestion des applications distribuées et conteneurisées à grande échelle. Vous n'avez qu'à lui indiquer où vous voulez que votre logiciel s'exécute et la plateforme se charge presque intégralement du déploiement et de la gestion de vos conteneurs.

Le projet Kubernetes a été initialement développé et conçu par des ingénieurs de Google, un des premiers contributeurs de la technologie de conteneurs Linux, avant d'être offert à la Cloud Native Computing Foundation (CNCF) en 2015. Ainsi, le bon fonctionnement de la communauté Kubernetes incombe entièrement à la CNCF, et le développement, la maintenance et le lancement de nouvelles versions reviennent aux administrateurs et aux contributeurs volontaires.

Red Hat était l'une des premières entreprises à travailler avec Google sur le projet Kubernetes, et ce, bien avant son lancement. Red Hat est depuis devenu son deuxième contributeur principal.

Red Hat OpenShift est une plateforme Kubernetes conçue pour les entreprises. Ce produit logiciel inclut les composants du projet de gestion des conteneurs Kubernetes, qu'il complète par des fonctions de productivité et de sécurité avancées importantes pour les grandes entreprises.

« OpenShift » fait référence à la technologie d'orchestration des conteneurs issue du projet Open Source OKD (auparavant OpenShift Origin). « Red Hat OpenShift » correspond à la suite de produits d'orchestration des conteneurs de Red Hat. Red Hat met en paquet plusieurs composants préconfigurés avec OpenShift dans divers produits, notamment :

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices