Qu'est-ce qu'on container ? Dans cet article, nous allons voir ce que c'est qu'un container, leur différence avec une machine virtuelle, ce que c'est que la conteneurisation et l'orchestration.
Container
Un conteneur [en anglais, container] est décrit comme étant une unité de logiciel exécutable. Cette unité de logiciel comprends toutes les bibliothèques et leur dépendances, de tel sorte qu'elle puisse être exécutée sur n'importe quel environnement informatique (serveur local, cloud etc).
Les systèmes d'exploitation modernes mettent à disposition une forme de virtualisation des systèmes d'exploitations où les fonctionnalité de ces derniers sont exposées afin d'isoler les processus et de mieux contrôler les ressources dudit système.
La mise à disponibilité de ces fonctionnalités du système hôte permet d'avoir des containers qui sont légers, rapides et portable, ce qui n'est pas le cas des machines virtuelles conventionnelles. Chaque container n'a pas à inclure un système d'exploitation, il utilise directement les fonctionnalités et les ressources du système hôte.
Bien que les containers ont commencé à être populaire avec la venue des solutions telle que Docker et LXC. En réalité les premières versions des containers sont apparues avec des solutions comme FreeBSD Jails et AIX Workload Partition.
Machine Virtuelle
Une machine virtuelle est une représentation d'un ordinateur physique dans un logiciel. Un Hyperviseur [en anglais, Hypervisor], en général est utilisé pour émuler le matériel physique. Les microprocesseurs modernes sont équipés d'un hypervisor qui permet le support de la virtualisation. Chez Intel ce support est marqué par Intel® VT-x. Chez ARM, les processeurs Cortex A sont équipés d'un mode nommé Hypervisor ce qui leur permettent de gérer les machine virtuelles. Là où les machines virtuelles émulent complètement le matériel physique, les containers utilisent directement ce matériel physique, ce qui les rend légers et rapides.
Utilisation des containers
Dans le monde du IT les containers sont devenus assez courant.
Les entreprises se détournent de plus en plus des machines virtuelles et s'orientent maintenant vers les containers. Il sera impossible de lister tous les cas d'utilisations des containers. Cette orientation est tout à fait logique vu les avantages que les containers présentent faces aux machines virtuelles. Sans plus tarder, voici quelques cas d'utilisations des containers :
- Microservices
- DevOps
- Cloud
- Isolation d'applications
L'utilisation des containers passe par ce qu'on appelle communément conteneurisation. La conteneurisation consiste à réunir dans une seul image, l'application ainsi que ses bibliothèques et dépendances, ces configurations et les variables systèmes(variables d'environnement). Une fois l'image crée, elle peut être exécutée ensuite dans un environnement qui la supporte: Docker, LXC etc.
Orchestration
Avec la possibilité de créer des images pour containers, il peut arriver une situation où nous nous retrouvons avec plusieurs containers à exécuter. Ce cas est fréquent dans le contexte des Microservices. La gestion de ces containers devient complexe. Afin d'améliorer la gestion de plusieurs containers, des outils comme Kubernetes(Google, 2014), Juju(Canonical, 2011) ont été développés. Ces outils d'orchestration permettent gérer les containers et leurs cycles de vie. La configuration de gestion des containers est décrite par un fichier YAML. Lorsqu'une application a un problème et est arrêtée pour une raison quelconque, ou que la charge augmente, l’outil d'orchestration se charge de redémarrer ou de démarrer une nouvelle instance de l'application. Cet outil peut aussi être utiliser pour gérer les ressources allouer au différents containers.
- Soyez le premier à commenter