GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Fonctionnement des conteneurs cloud et leurs avantages

Les tendances technologiques vont et viennent, mais les conteneurs cloud sont une technologie qui est là pour rester. Leurs origines remontent à 1982 Unix, mais les conteneurs n'ont été largement acceptés qu'au cours de la dernière décennie en tant que prochaine étape logique de la virtualisation. Aujourd'hui, ils sont un moyen populaire de modernisation et de déploiement d'applications.

L'objectif de la conteneurisation, c'est-à-dire le processus de migration des applications héritées vers des conteneurs, est d'offrir un meilleur moyen de créer, de conditionner et de déployer des applications logicielles complexes dans différents environnements. La conteneurisation permet de rendre les applications moins complexes à déployer, à mettre à jour/changer/modifier et à faire évoluer.

Les conteneurs sont de plus en plus populaires dans les environnements cloud en raison de leur légèreté par rapport aux machines virtuelles (VM). De nombreuses organisations considèrent les conteneurs comme une alternative aux charges de travail à grande échelle des VM.

Que sont les conteneurs cloud ?

Les conteneurs de calcul contiennent du code d'application ainsi que ses bibliothèques et ses dépendances de fonctions afin qu'ils puissent être exécutés n'importe où ; que ce soit sur un ordinateur de bureau, une infrastructure de serveur informatique traditionnelle ou le cloud.

Ils sont petits, rapides et portables car, contrairement à une machine virtuelle, les conteneurs n'ont pas besoin d'inclure un système d'exploitation complet dans chaque instance. Tout ce dont ils ont besoin, ce sont les bibliothèques et les dépendances nécessaires pour exécuter l'application et tirer parti des autres fonctionnalités et ressources requises du système d'exploitation hôte.

Les conteneurs sont créés à partir d'images de conteneur, qui sont des modèles contenant le système, les applications et l'environnement du conteneur. Avec les images de conteneur, une grande partie du travail de création d'un conteneur est déjà fait pour vous. Tout ce que vous avez à faire est d'ajouter la logique de calcul. Il existe de nombreux modèles différents pour créer des conteneurs spécifiques à une utilisation, tout comme il existe des bibliothèques et des modèles pour développer du code.

Il existe plusieurs sites de modèles de conteneurs, mais le leader du marché est Docker, qui a lancé la tendance des conteneurs en 2013. Docker est un ensemble d'outils qui permet aux utilisateurs de créer des images de conteneurs, de pousser ou d'extraire des images de registres externes, et d'exécuter et de gérer des conteneurs dans de nombreux environnements différents. Il gère également le plus grand hub de distribution de modèles de conteneurs. Pour savoir comment installer Docker sur votre système Linux, consultez notre guide d'installation et d'utilisation de Docker.

Les conteneurs sont considérablement réduits en taille et en complexité et n'exécutent souvent qu'une seule fonction. Ce n'est pas parce qu'ils sont petits qu'ils ne doivent pas être gérés. Les conteneurs sont gérés via un processus appelé orchestration, qui automatise la plupart des tâches opérationnelles nécessaires à l'exécution des charges de travail et des services conteneurisés.

L'orchestration couvre la gestion du cycle de vie d'un conteneur, le provisionnement, le déploiement, la mise à l'échelle vers le haut ou vers le bas, la mise en réseau, l'équilibrage de charge, etc. Il existe plusieurs applications d'orchestration, mais la plus populaire est de loin Kubernetes, conçue à l'origine par Google et désormais gérée par la Cloud Native Computing Foundation.

Conteneurs contre machines virtuelles

Les conteneurs sont régulièrement comparés aux VM ici et ailleurs et pour cause. Ils fonctionnent sur le même concept, qui est le fonctionnement de plusieurs environnements d'application sur le même matériel physique.

Les machines virtuelles sont considérées comme la base de la première génération de cloud computing. Avec l'avènement de l'informatique 64 bits, les serveurs ont dépassé la limite de mémoire de 4 Go des processeurs 32 bits. L'arrivée de la puissance de traitement multicœur produit pour plusieurs environnements virtuels. Avec suffisamment de mémoire et de cœurs, il est possible d'exécuter une centaine de machines virtuelles ou plus sur un seul système physique.

Une machine virtuelle a besoin d'un environnement d'exploitation complet qui consomme un à deux gigaoctets de mémoire, qu'elle se trouve sur un serveur Windows ou une version de Linux. Un conteneur est un environnement d'exploitation considérablement réduit et utilise aussi peu que 6 Mo de mémoire.

L'avantage est que vous pouvez avoir des centaines de conteneurs sur un serveur robuste, tant que vous disposez de la mémoire et de la puissance de traitement nécessaires pour tout gérer.

Les hyperviseurs de machines virtuelles virtualisent le matériel physique et les conteneurs virtualisent le système d'exploitation. L'hyperviseur gère et coordonne toutes les E/S et l'activité de la machine, équilibre la charge et traite toutes les tâches physiques telles que le traitement et le déplacement des données.

Un gestionnaire de conteneurs tel que Kubernetes gère les tâches logicielles pour lesquelles le conteneur n'est pas configuré. L'application dans le conteneur a ce dont elle a besoin avec ses bibliothèques et ses dépendances. S'il a besoin d'autre chose du système d'exploitation, le gestionnaire de conteneurs s'en charge.

Il ne s'agit pas de choisir l'un ou l'autre en ce qui concerne les machines virtuelles et les conteneurs. Ils peuvent coexister facilement, les conteneurs à l'intérieur des machines virtuelles fonctionnant à distance.

Comment fonctionnent les conteneurs cloud ?

La technologie des conteneurs est née avec la première séparation des partitions et des processus chroot sous Unix, qui a ensuite été ajoutée à Linux. Les conteneurs regroupent leurs fichiers et bibliothèques de dépendance dans le conteneur plutôt que de s'appuyer sur le système d'exploitation sous-jacent. Les applications qui s'exécutent dans des conteneurs ne sont pas des applications complètes et complexes qui s'exécutent dans un environnement virtuel ou non virtuel standard. Chaque conteneur fonctionne de manière virtuellement isolée, chaque application accédant à un noyau de système d'exploitation partagé sans avoir besoin de machines virtuelles.

Les conteneurs cloud sont conçus pour virtualiser une seule application, qu'il s'agisse d'une simple application à usage unique ou d'une base de données MySQL. Les conteneurs ont une limite d'isolation au niveau de l'application plutôt qu'au niveau du serveur afin que le conteneur soit isolé en cas de problème. En cas de plantage de l'application ou de consommation excessive inexpliquée de ressources par un processus, cela n'affecte que ce conteneur individuel et non l'ensemble de la machine virtuelle ou du serveur entier. L'orchestrateur peut faire tourner un autre conteneur pour remplacer le conteneur problématique. Il arrête et redémarre également le conteneur avec le problème.

Les avantages des conteneurs dans le cloud computing

Les avantages de l'utilisation de conteneurs sont nombreux. Premièrement, l'utilisation de modèles est similaire au fonctionnement des classes et des bibliothèques dans la programmation orientée objet (POO). En POO, vous créez une classe ou un objet, puis vous le réutilisez dans plusieurs applications. Il en va de même pour les conteneurs. Une seule image de conteneur est utilisée pour créer plusieurs conteneurs. Le concept d'héritage de la POO s'applique également aux conteneurs puisque les images de conteneur agissent en tant que parent pour d'autres images de conteneur plus personnalisées.

Les conteneurs s'exécutent de manière cohérente sur un poste de travail, un serveur local ou le cloud. Cela facilite leur test avant le déploiement. Certains scénarios nécessitent un banc d'essai d'une échelle similaire au paramètre de déploiement, ce qui implique de consacrer des ressources considérables à l'environnement de test. Les conteneurs peuvent être testés localement avant le déploiement dans le cloud en sachant que les performances seront constantes.

Le principal avantage des conteneurs, en particulier par rapport à une machine virtuelle, est que les conteneurs sont légers et portables. Les conteneurs partagent le noyau du système d'exploitation de la machine, ce qui élimine beaucoup de surcharge. Leur taille plus petite par rapport aux machines virtuelles signifie qu'elles peuvent démarrer rapidement et mieux prendre en charge les applications cloud natives qui évoluent horizontalement.

  1. Ils sont indépendants de la plate-forme :les conteneurs transportent toutes leurs dépendances avec eux et vous pouvez les utiliser sur différentes versions de Linux tant que vous ne faites pas d'appels au noyau.

  2. Prend en charge les architectures de développement modernes :en raison de la combinaison de leur portabilité/cohérence de déploiement sur toutes les plates-formes et de leur petite taille, les conteneurs conviennent parfaitement aux méthodologies de développement et d'application modernes, telles qu'Agile, DevOps, sans serveur et les microservices.

  3. Améliore les performances :les applications conteneurisées sont généralement de grandes applications décomposées en éléments gérables. Cela présente de nombreux avantages, dont l'amélioration des performances n'est pas le moindre, car si un composant a besoin de ressources accrues, le conteneur évolue automatiquement pour offrir plus de cœurs de processeur/mémoire/réseau, puis diminue lorsque la charge diminue.

  4. Débogage efficace :Un autre avantage de la conteneurisation par rapport aux applications monolithiques est qu'il devient plus rapide de trouver les goulots d'étranglement de performance. Avec une application monolithique, les développeurs doivent faire beaucoup d'essais et d'erreurs/processus d'élimination pour trouver un goulot d'étranglement des performances. Lorsqu'il est décomposé en composants, le code incriminé devient plus visible et les développeurs peuvent zoomer plus rapidement sur le point problématique.

  5. Prise en charge hybride/multi-cloud :en raison de sa portabilité, les conteneurs peuvent migrer entre le local et le cloud. Ils peuvent également passer d'un fournisseur de cloud à un autre.

  6. Modernisation des applications :une manière courante de moderniser une application existante sur site consiste à la conteneuriser et à la déplacer « telle quelle » vers le cloud. Ce modèle est connu sous le nom de « lift and shift » et n'est pas recommandé. Les applications sur site se comportent différemment des applications cloud natives et le simple fait de déplacer une application sur site dans le cloud sans la modifier ne profite pas des avantages du cloud, tels que la mise à l'échelle automatique à la hausse et à la baisse.

  7. Améliore l'utilisation :dans une application monolithique, l'ensemble de l'application et toute son utilisation de la mémoire doivent augmenter les performances. Cela ralentit le serveur. Avec une application conteneurisée, seul ce composant gourmand en performances doit évoluer. Il le fait automatiquement et l'orchestrateur augmente les ressources si nécessaire, puis les réduit lorsque la tâche est terminée.

Conclusion

Les conteneurs sont un moyen de plus en plus populaire pour les entreprises de migrer des applications sur site vers le cloud et de profiter de tous les avantages du cloud :évolutivité, élasticité, développement DevOps et déchargement des ressources sur site vers un fournisseur de cloud.

La technologie est mature, avec un certain nombre de concurrents à Docker, dont Microsoft Azure, et des concurrents à Kubernetes, tels que Red Hat OpenShift. La plupart des fournisseurs de cloud proposent des services de conteneurs et d'orchestration prêts à l'emploi, y compris nous ici à Linode, avec un service Kubernetes géré.


Docker
  1. Comment exporter et importer des conteneurs Docker

  2. Comment partager des données entre des conteneurs Docker

  3. Comment installer, exécuter et supprimer des applications dans les conteneurs Docker - Partie 2

  4. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

  5. Comment créer et lancer des conteneurs Linux LXC avec les commandes LXC

Comment déployer et gérer un conteneur Docker MongoDB

Comment se connecter en SSH aux conteneurs Docker [étape par étape]

Comment exécuter des conteneurs Docker

Comment nommer ou renommer les conteneurs Docker

Comment :démarrer avec les conteneurs Windows et Docker

Comment gérer les conteneurs Docker