Les conteneurs informatiques : la nouvelle virtualisation

La virtualisation a révolutionné les technologies de l’information. Le partage des ressources d’un ordinateur physique sur plusieurs machines virtuelles a fait son apparition avant tout sous la forme de virtualisation matérielle dans le paysage informatique. Cette approche se base sur l’émulation de composants matériels qui permet d’installer plusieurs serveurs virtuels sur un même système d’hébergement commun, tout en utilisant son propre système d’exploitation (aussi appelé OS pour operating system). Une telle architecture intervient souvent dans le développement des logiciels si plusieurs tests doivent être réalisés sur un ordinateur. La virtualisation constitue la base de divers produits d’hébergement Web, basés sur la technologie du cloud.

Une alternative à la virtualisation matérielle est donnée par la virtualisation du système d’exploitation. C’est ainsi que diverses applications de serveurs sont réalisées dans des environnements virtuels isolés, ce qu’on appelle les conteneurs, qui fonctionnent sur le même système d’exploitation. On parle ici de virtualisation par conteneur. De la même manière que pour les machines virtuelles qui fonctionnent sur leurs propres systèmes d’exploitation, les conteneurs permettent d’utiliser différentes applications et exigences sur un seul et même système physique. Etant donné qu’un conteneur ne comprend pas de système d’exploitation, cette technique de virtualisation se caractérise par une installation considérablement simplifiée et une faible surcharge.

Les conteneurs n’ont pas été inventés. Cette technologie a été élaborée grâce à des projets open source tels que Docker et rkt de CoreOs.

Les conteneurs informatiques, qu’est-ce-que c’est ?

Une virtualisation matérielle s’appuie sur ce qu’on appelle un hyperviseur, qui se pose sur le matériel de l’hébergeur et qui le répartit proportionnellement aux systèmes hôtes. A l’inverse, aucun système d’exploitation supplémentaire n’est démarré lors de la virtualisation par conteneur. Au lieu de cela, l’OS commun forme des instances isolées. Ces conteneurs virtuels fournissent aux applications un environnement complet d’exécution.

Les conteneurs logiciels sont considérés comme des applications pour le serveur. Pour installer une application, il faut charger le conteneur correspondant dans un format portable (ce qu’on appelle une image) avec toutes les données nécessaires sur l’ordinateur et le démarrer dans un environnement virtualisé. On peut implémenter les applications dans les conteneurs avec presque tous les systèmes d’exploitation. Sur Windows, on trouve le logiciel Virtuozzo développé par la société Parallels, FreeBSD met à disposition l’environnement virtualisé Jails et Linux prend en charge des conteneurs tels que OpenVZ et LXC. La virtualisation des systèmes d’exploitation est intéressante pour le marché de masse seulement via les conteneurs plateforme tels que Docker ou rkt. Vous pouvez y ajouter les fonctions de base afin de faciliter l’utilisation du conteneur.

Docker et le retour de la technologie des conteneurs

Toute personne qui s’intéresse à la virtualisation 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 technologie de la conteneurisation. Docker est un outil de lignes de commandes qui permet de démarrer, d’arrêter et de gérer des conteneurs. Celui-ci se base sur des techniques de Linux telles que Cgroups et Namesspaces afin de réaliser une séparation des ressources des conteneurs individuels. A l’origine, Docker reposait sur le format de containers Linux, alias LXC. Aujourd’hui, les conteneurs Docker utilisent une interface de programmation appelée Libcontainer.

Une caractéristique centrale de la plateforme Docker est le Docker Hub, un service en ligne qui contient des images de conteneurs, permettant aux utilisateurs de se les échanger. L’installation d’un conteneur pré-paramétré se réalise aussi facilement qu’un téléchargement sur Internet. Les applications correspondantes sont téléchargées via de simples commandes venant du Hub Docker central et sont ensuite exécutées.

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

Les caractéristiques d’une virtualisation en conteneur

Les conteneurs présentent aux administrateurs des données complètes qui servent au fonctionnement d’une application serveur. Cela permet par exemple l’installation et l’automatisation des applications en conteneurs.

  • Facile à installer : les conteneurs 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 composants nécessaires tels que les librairies, les programmes d’aide voire les données de configuration. Ainsi, les différences entre les distributions de systèmes d’exploitation se compensent. L’installation d’une telle application de serveur se limite à la rédaction d’une seule ligne de commande.
  • Indépendance de la plateforme : les images peuvent être facilement transférées d’un système à un autre et se caractérisent par un haut degré d’indépendance vis-à-vis de la plateforme. Afin de démarrer un conteneur logiciel en partant d’une image, vous aurez uniquement besoin d’un système d’exploitation avec un conteneur plateforme approprié.
  • Pics de virtualisation : en ayant recours à Linux et Docker, une telle architecture regroupe environ 100 Mégabytes et se règle en peu de temps. Cependant, une installation mince n’est pas le seul point positif pour les administrateurs système. Alors que pendant une virtualisation matérielle, de fortes pertes de performance se font ressentir via l’hyperviseur et les autres systèmes d’exploitation, les containers réduisent au minimum les pics de virtualisation. Par ailleurs, le démarrage des machines virtuelles dure plusieurs minutes alors que les applications dans les conteneurs sont toujours à disposition.
  • Applications isolées : chaque programme fonctionne indépendamment des autres conteneurs logiciels sur le système d’exploitation. Ainsi les applications qui comportent des exigences contradictoires et qui demandent peu d’investissement fonctionnent parallèlement sur le même OS.
  • Administration et automatisation : étant donné que la gestion de tous les conteneurs plateforme telles que Docker s’effectue avec les même outils, les applications dans le centre de données peuvent largement être automatisées. Les containers sont particulièrement adaptés aux architectures de serveurs dans lesquelles les composants sont répartis sur plusieurs serveurs de manière à ce que les charges soient transportées par différentes instances. La plateforme Docker met des outils à disposition de ces domaines d’application avec lesquelles des automatismes sont configurés. Cela permet par exemple de démarrer automatiquement de nouvelles instances durant des pics de trafic de données. Google fournit un logiciel Docker construit sur mesure pour orchestrer des clusters de conteneurs. Son nom est Kubernetes.

La technologie des conteneurs est-elle sécurisée ?

Le fait de renoncer à des systèmes d’exploitation séparés donne un avantage quant à la performance de la virtualisation 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 virtualisations matérielles ne s’appuient en général que sur une seule machine virtuelle, elles n’ont un effet sur tous les conteneurs logiciels que lors de la virtualisation au niveau du système d’exploitation. C’est pour cette raison que les containers sont encapsulés de la même manière que les machines virtuelles avec leurs propres OS. Une attaque sur l’hyperviseur peut également causer d’importants dommages. Cependant, cette faible complexité a pour conséquence que la surface d’attaque est bien inférieure que sur un kernel de LINUX. Les conteneurs représentent aujourd’hui une alternative à la virtualisation matérielle mais il faut néanmoins garder en mémoire que ceux-ci ne peuvent pas encore la remplacer entièrement.