Applications

Docker, une nouvelle façon de virtualiser les systèmes et les programmes

Docker est le projet open source multiplateforme qui automatise le déploiement d’applications dans des conteneurs à l’ aide de fonctionnalités d’ isolation des ressources pour éviter d’avoir à utiliser plusieurs machines virtuelles gourmandes en ressources pour effectuer la même tâche, réduisant les frais généraux et augmentant l’évolutivité et la portabilité.

En peu de temps, Docker est devenu la principale application de gestion de conteneurs dans le monde et combiné à d’autres services tels que Kubernetes, il dispose de capacités qui couvrent presque toutes les exigences, pour tous, à l’exception de certains cas spécifiques que nous analyserons plus en détail, comme Docker ne convient pas à toutes les utilisations en raison de sa conception.

Pour commencer, un peu d’histoire

L’idée de Docker est née de la main de Solomon Hykes en tant que projet interne au sein de dotCloud (fondée en 2010), qui était une entreprise axée sur la création d’un PaaS, elle serait renommée Docker Inc. qui est la société actuelle qui se développe Docker Hub et Docker pour le bureau.

Au début, il utilisait LXC comme environnement d’exécution, qui a ensuite été remplacé par sa propre bibliothèque écrite dans le langage de programmation Go appelé libcontainer pour en faire un programme multiplateforme.

Qu’est-ce que Docker et à quoi sert-il?

Sa fonction coïncide avec le slogan et est de développer, d’envoyer et d’exécuter n’importe quelle application sur n’importe quel système d’exploitation, ce qui constitue une alternative flexible avec un besoin de ressources bien moindre que les machines virtuelles traditionnelles qui sont des émulations de composants matériels basés sur des machines virtuelles.

Il s’agit d’une technologie de virtualisation basée sur des conteneurs qui partage le noyau hôte pour exécuter des processus isolés dans l’espace utilisateur sans avoir besoin d’un autre système d’exploitation en cours d’exécution, consommant des ressources inutiles.

Différences avec les machines virtuelles traditionnelles

Nous économiserons toutes les ressources utilisées par les systèmes d’exploitation virtualisés et nous pourrons également exécuter nos conteneurs sur n’importe quel système d’exploitation sur lequel Docker est installé pour pouvoir exécuter nos applications.

Gardez à l’esprit que Docker n’est pas valable pour tous les types d’applications car il est conçu pour les micro-services sans interfaces utilisateur graphiques, donc ce n’est pas toujours la meilleure option par rapport à l’utilisation de machines virtuelles car peut-être que nous voulons utiliser une interface graphique et puis l’utilisation d’une machine virtuelle serait une meilleure option. De plus, la persistance de Docker est inexistante, donc si nous désactivons l’un des conteneurs, toutes les informations qu’il contient disparaîtront, donc pour ce type de service, il est préférable d’utiliser un service séparé ou d’utiliser une machine virtuelle dans ce but.

Que compose Docker?

Il est composé de trois composants fondamentaux qui sont le moteur Docker, les images Docker et le Docker Hub.

Le moteur Docker est une application client-serveur avec 3 composants fondamentaux:

  • Le démon Docker (serveur) qui est le processus qui fonctionne en arrière-plan sur l’hôte et est responsable de la création et de la gestion des images réseau, des conteneurs et des processus.
  • L’ API REST est une interface de programmation basée sur REST qui est chargée d’interagir et de donner des instructions au démon.
  • Le terminal (client) est en charge de fournir l’interface pour interagir avec le démon via l’API REST avec des scripts ou des commandes.

Les images Docker sont les conteneurs que l’utilisateur crée ou télécharge Docker Hub et contiennent les ressources nécessaires pour exécuter une application particulière et l’application à exécuter.

Le Docker Hub fournit des images Docker pour permettre aux utilisateurs de télécharger facilement des conteneurs avec des services prêts à l’emploi, ce qui permet de gagner beaucoup de temps. Il s’agit d’une bibliothèque en ligne avec de nombreux référentiels publics où vous trouverez tout ce dont vous avez besoin pour commencer, bien qu’elle dispose également de référentiels privés.

Quels avantages a-t-il?

Le plus important est l’ évolutivité car les conteneurs sont facilement réplicables et offrent ainsi une haute disponibilité , car en cas de panne, il y aurait encore d’autres conteneurs offrant le service. De plus, il peut être utilisé dans tous les systèmes d’exploitation sur lesquels la plate-forme Docker est installée, ce qui offre une excellente portabilité , car il peut être créé dans un Ubuntu Focal Fossa, par exemple, puis amener ce service sur un serveur Windows et il fonctionne à la perfection comme dans la machine où elle a été créée.

Le grand avantage est que les applications avec des exigences différentes peuvent être exécutées de manière isolée en utilisant les fonctions de base du noyau Linux, qui sont les groupes de contrôle et les espaces de noms.

Les Cgroups limitent l’accès des processus à l’utilisation de la mémoire, du CPU et de la sortie d’entrée, empêchant les différents processus de consommer des ressources d’autres processus.

Les espaces de noms limitent l’encapsulation des processus et des threads, en utilisant 5 zones spécifiques:

  • UTS ou identifiant système est utilisé pour attribuer les noms de domaine et d’ordinateur aux conteneurs.
  • Le PID ou identifiant de processus est utilisé dans chaque conteneur Docker avec un espace de noms indépendant afin que tous les processus en dehors du conteneur ne soient pas affectés s’ils ont le même PID, évitant ainsi les conflits grâce au fait qu’ils sont encapsulés.
  • IPC ou communicateur entre processus est chargé d’isoler les processus dans chaque conteneur en évitant la communication avec les processus externes.
  • NET ou network resources est chargé d’attribuer à chaque conteneur les ressources réseau dont il a besoin pour être connecté.
  • MNT ou point de montage du système de fichiers est chargé d’isoler l’espace réservé du conteneur afin qu’il ne soit accessible qu’à partir du conteneur Docker

Comme nous l’avons mentionné précédemment, au début, Docker utilisait LXC qui a ensuite été remplacé par libcontainer, ce qui permet à Docker de devenir multiplateforme, pouvant fonctionner à la fois sur Linux, Windows et MacOS car s’il continuait à utiliser LXC, il ne pourrait pour fonctionner sur des environnements Linux.

Quels sont ses inconvénients?

Il présente 5 principaux inconvénients à prendre en compte lorsque nous choisissons d’utiliser Docker pour la virtualisation d’applications conteneurisées:

La vitesse d’exécution n’est pas la même que si nous exécutions l’application directement sur l’hôte . Les conteneurs, bien qu’ils réduisent considérablement la surcharge par rapport à l’utilisation d’un système d’exploitation virtualisé, exécuter la même application n’atteint pas la même vitesse que si elle s’exécutait directement sur l’hôte.

L’ écosystème de conteneurs est cassé et certains des conteneurs ne fonctionnent pas avec d’autres tels que OpenShift de Red Hat qui ne fonctionne qu’avec Kubernetes.

L’utilisation de Docker pour le stockage persistant ne devrait pas être une option , car en raison de la façon dont il a été conçu une fois qu’un conteneur disparaît, tout son contenu disparaît également, de sorte que tout stockage persistant tel qu’une base de données ne doit jamais être dans un conteneur Docker, car nous courons le risque de perte d’informations.

Les applications avec des interfaces graphiques ne fonctionnent pas bien car Docker de par sa conception ne nécessite aucune interface graphique car il est orienté vers des applications serveur.

Toutes les applications ne bénéficient pas de l’utilisation de conteneurs car elles sont principalement destinées aux micro-services.

Difficulté

En voulant apprendre, la difficulté est un peu plus élevée que la virtualisation sans conteneur, puisqu’elle ne dispose pas d’une interface utilisateur graphique comme celles proposées par les solutions de virtualisation pour les systèmes d’exploitation tels que QEMU, HyperV, VMWare ou VirtualBox, elle obtient peut-être un un peu plus difficile au début. Mais comme nous l’avons déjà mentionné, ces techniques de virtualisation non basées sur des conteneurs ont une surcharge beaucoup plus faible, ce qui offre un grand avantage par rapport à la virtualisation du système d’exploitation et il existe de nombreux tutoriels et vidéos YouTube disponibles sur Internet pour pouvoir en apprendre davantage sur Docker en très peu de temps. temps avec peu d’effort.

Télécharger

Nous aurons la possibilité de télécharger Docker gratuitement à partir du site Web du développeur et nous aurons également accès à beaucoup de documentation qui nous explique comment il est utilisé.

Articles Similaires

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba