La vir­tua­li­sa­tion a ré­vo­lu­tionné les tech­no­lo­gies de l’in­for­ma­tion. Le partage des res­sources d’un or­di­na­teur physique sur plusieurs machines vir­tuelles a fait son ap­pa­ri­tion avant tout sous la forme de vir­tua­li­sa­tion ma­té­rielle dans le paysage in­for­ma­tique. Cette approche se base sur l’émulation de com­po­sants matériels qui permet d’installer plusieurs serveurs virtuels sur un même système d’hé­ber­ge­ment commun, tout en utilisant son propre système d’ex­ploi­ta­tion (aussi appelé OS pour operating system). Une telle ar­chi­tec­ture in­ter­vient souvent dans le dé­ve­lop­pe­ment des logiciels si plusieurs tests doivent être réalisés sur un or­di­na­teur. La vir­tua­li­sa­tion constitue la base de divers produits d’hé­ber­ge­ment Web, basés sur la tech­no­lo­gie du cloud.

Une al­ter­na­tive à la vir­tua­li­sa­tion ma­té­rielle est donnée par la vir­tua­li­sa­tion du système d’ex­ploi­ta­tion. C’est ainsi que diverses ap­pli­ca­tions de serveurs sont réalisées dans des en­vi­ron­ne­ments virtuels isolés, ce qu’on appelle les con­te­neurs, qui fonc­tion­nent sur le même système d’ex­ploi­ta­tion. On parle ici de vir­tua­li­sa­tion par conteneur. De la même manière que pour les machines vir­tuelles qui fonc­tion­nent sur leurs propres systèmes d’ex­ploi­ta­tion, les con­te­neurs per­met­tent d’utiliser dif­fé­rentes ap­pli­ca­tions et exigences sur un seul et même système physique. Etant donné qu’un conteneur ne comprend pas de système d’ex­ploi­ta­tion, cette technique de vir­tua­li­sa­tion se ca­rac­té­rise par une ins­tal­la­tion con­si­dé­ra­ble­ment sim­pli­fiée et une faible surcharge.

Les con­te­neurs n’ont pas été inventés. Cette tech­no­lo­gie a été élaborée grâce à des projets open source tels que Docker et rkt de CoreOs.

Les con­te­neurs in­for­ma­tiques, qu’est-ce-que c’est ?

Une vir­tua­li­sa­tion ma­té­rielle s’appuie sur ce qu’on appelle un hy­per­vi­seur, qui se pose sur le matériel de l’hébergeur et qui le répartit pro­por­tion­nel­le­ment aux systèmes hôtes. A l’inverse, aucun système d’ex­ploi­ta­tion sup­plé­men­taire n’est démarré lors de la vir­tua­li­sa­tion par conteneur. Au lieu de cela, l’OS commun forme des instances isolées. Ces con­te­neurs virtuels four­nis­sent aux ap­pli­ca­tions un en­vi­ron­ne­ment complet d’exécution.

Les con­te­neurs logiciels sont con­si­dé­rés comme des ap­pli­ca­tions pour le serveur. Pour installer une ap­pli­ca­tion, il faut charger le conteneur cor­res­pon­dant dans un format portable (ce qu’on appelle une image) avec toutes les données né­ces­saires sur l’or­di­na­teur et le démarrer dans un en­vi­ron­ne­ment vir­tua­lisé. On peut im­plé­men­ter les ap­pli­ca­tions dans les con­te­neurs avec presque tous les systèmes d’ex­ploi­ta­tion. Sur Windows, on trouve le logiciel Virtuozzo développé par la société Parallels, FreeBSD met à dis­po­si­tion l’en­vi­ron­ne­ment vir­tua­lisé Jails et Linux prend en charge des con­te­neurs tels que OpenVZ et LXC. La vir­tua­li­sa­tion des systèmes d’ex­ploi­ta­tion est in­té­res­sante pour le marché de masse seulement via les con­te­neurs pla­te­forme tels que Docker ou rkt. Vous pouvez y ajouter les fonctions de base afin de faciliter l’uti­li­sa­tion du conteneur.

Docker et le retour de la tech­no­lo­gie des con­te­neurs

Toute personne qui s’intéresse à la vir­tua­li­sa­tion par conteneur tombera sur le logiciel Docker. Ce projet open source est devenu en quelques années, grâce à un excellent marketing, synonyme de la tech­no­lo­gie de la con­te­neu­ri­sa­tion. Docker est un outil de lignes de commandes qui permet de démarrer, d’arrêter et de gérer des con­te­neurs. Celui-ci se base sur des tech­niques de Linux telles que Cgroups et Na­mess­paces afin de réaliser une sé­pa­ra­tion des res­sources des con­te­neurs in­di­vi­duels. A l’origine, Docker reposait sur le format de con­tai­ners Linux, alias LXC. Aujourd’hui, les con­te­neurs Docker utilisent une interface de pro­gram­ma­tion appelée Lib­con­tai­ner.

Une ca­rac­té­ris­tique centrale de la pla­te­forme Docker est le Docker Hub, un service en ligne qui contient des images de con­te­neurs, per­met­tant aux uti­li­sa­teurs de se les échanger. L’ins­tal­la­tion d’un conteneur pré-paramétré se réalise aussi fa­ci­le­ment qu’un té­lé­char­ge­ment sur Internet. Les ap­pli­ca­tions cor­res­pon­dantes sont té­lé­char­gées via de simples commandes venant du Hub Docker central et sont ensuite exécutées.

Docker est con­cur­rencé par rkt, qui prend en charge les images Docker mais aussi le format ACI (App Container Images).

Managed Nextcloud de IONOS Cloud
Tra­vail­lez en équipe dans votre propre Cloud
  • Sécurité des données
  • Outils de col­la­bo­ra­tion intégrés
  • Hé­ber­ge­ment dans des data centers européens

Les ca­rac­té­ris­tiques d’une vir­tua­li­sa­tion en conteneur

Les con­te­neurs pré­sen­tent aux ad­mi­nis­tra­teurs des données complètes qui servent au fonc­tion­ne­ment d’une ap­pli­ca­tion serveur. Cela permet par exemple l’ins­tal­la­tion et l’au­to­ma­ti­sa­tion des ap­pli­ca­tions en con­te­neurs.

  • Facile à installer : les con­te­neurs logiciels sont lancés à partir d’images. Il s’agit d’images portables provenant d’un conteneur qui contient un programme unique de serveurs ainsi que tous les com­po­sants né­ces­saires tels que les li­brai­ries, les pro­grammes d’aide voire les données de con­fi­gu­ra­tion. Ainsi, les dif­fé­rences entre les dis­tri­bu­tions de systèmes d’ex­ploi­ta­tion se com­pen­sent. L’ins­tal­la­tion d’une telle ap­pli­ca­tion de serveur se limite à la rédaction d’une seule ligne de commande.
  • In­dé­pen­dance de la pla­te­forme : les images peuvent être fa­ci­le­ment trans­fé­rées d’un système à un autre et se ca­rac­té­ri­sent par un haut degré d’in­dé­pen­dance vis-à-vis de la pla­te­forme. Afin de démarrer un conteneur logiciel en partant d’une image, vous aurez uni­que­ment besoin d’un système d’ex­ploi­ta­tion avec un conteneur pla­te­forme approprié.
  • Pics de vir­tua­li­sa­tion : en ayant recours à Linux et Docker, une telle ar­chi­tec­ture regroupe environ 100 Mégabytes et se règle en peu de temps. Cependant, une ins­tal­la­tion mince n’est pas le seul point positif pour les ad­mi­nis­tra­teurs système. Alors que pendant une vir­tua­li­sa­tion ma­té­rielle, de fortes pertes de per­for­mance se font ressentir via l’hy­per­vi­seur et les autres systèmes d’ex­ploi­ta­tion, les con­tai­ners réduisent au minimum les pics de vir­tua­li­sa­tion. Par ailleurs, le démarrage des machines vir­tuelles dure plusieurs minutes alors que les ap­pli­ca­tions dans les con­te­neurs sont toujours à dis­po­si­tion.
  • Ap­pli­ca­tions isolées : chaque programme fonc­tionne in­dé­pen­dam­ment des autres con­te­neurs logiciels sur le système d’ex­ploi­ta­tion. Ainsi les ap­pli­ca­tions qui com­por­tent des exigences con­tra­dic­toires et qui demandent peu d’in­ves­tis­se­ment fonc­tion­nent pa­ral­lè­le­ment sur le même OS.
  • Ad­mi­nis­tra­tion et au­to­ma­ti­sa­tion : étant donné que la gestion de tous les con­te­neurs pla­te­forme telles que Docker s’effectue avec les même outils, les ap­pli­ca­tions dans le centre de données peuvent largement être au­to­ma­ti­sées. Les con­tai­ners sont par­ti­cu­liè­re­ment adaptés aux ar­chi­tec­tures de serveurs dans les­quelles les com­po­sants sont répartis sur plusieurs serveurs de manière à ce que les charges soient trans­por­tées par dif­fé­rentes instances. La pla­te­forme Docker met des outils à dis­po­si­tion de ces domaines d’ap­pli­ca­tion avec les­quelles des au­to­ma­tismes sont con­fi­gu­rés. Cela permet par exemple de démarrer au­to­ma­ti­que­ment de nouvelles instances durant des pics de trafic de données. Google fournit un logiciel Docker construit sur mesure pour or­ches­trer des clusters de con­te­neurs. Son nom est Ku­ber­netes.

La tech­no­lo­gie des con­te­neurs est-elle sécurisée ?

Le fait de renoncer à des systèmes d’ex­ploi­ta­tion séparés donne un avantage quant à la per­for­mance de la vir­tua­li­sa­tion par container. Néanmoins, il faut prendre en compte le niveau de sécurité réduit que cela implique. Tandis que les failles de sécurité dans le système lors des vir­tua­li­sa­tions ma­té­rielles ne s’appuient en général que sur une seule machine virtuelle, elles n’ont un effet sur tous les con­te­neurs logiciels que lors de la vir­tua­li­sa­tion au niveau du système d’ex­ploi­ta­tion. C’est pour cette raison que les con­tai­ners sont en­cap­su­lés de la même manière que les machines vir­tuelles avec leurs propres OS. Une attaque sur l’hy­per­vi­seur peut également causer d’im­por­tants dommages. Cependant, cette faible com­plexité a pour con­sé­quence que la surface d’attaque est bien in­fé­rieure que sur un kernel de LINUX. Les con­te­neurs re­pré­sen­tent aujourd’hui une al­ter­na­tive à la vir­tua­li­sa­tion ma­té­rielle mais il faut néanmoins garder en mémoire que ceux-ci ne peuvent pas encore la remplacer en­tiè­re­ment.

Aller au menu principal