Introduction à Docker : qu'est-ce que c'est, architecture, flux de travail
Publié: 2020-04-27Table des matières
Histoire de la virtualisation
Il n'y a pas si longtemps, déployer un service était un processus à la fois lent et pénible. Le processus impliquait l'écriture du code par l'équipe de développement puis son déploiement par l'équipe d'exploitation sur des machines métalliques. L'équipe des opérations avait l'habitude d'avoir du pain sur la planche car elle devait rechercher des compilateurs de langage, des bibliothèques et des correctifs pour faire fonctionner le code.
Si le processus comportait des erreurs ou des bogues, il devait tout recommencer - l'équipe de développement corrigeait les bogues ou les erreurs, et l'équipe des opérations recommençait à déployer le code.
Les choses se sont un peu améliorées lorsque les hyperviseurs ont été développés. Alors, que sont les hyperviseurs ? Il s'agit d'un ensemble de machines virtuelles (VM) qui peuvent fonctionner en continu ou s'éteindre à intervalles réguliers, en particulier lorsqu'elles ne sont pas utilisées. Les machines virtuelles ont certainement aidé en accélérant le processus de correction des erreurs et le déploiement du code, mais elles avaient encore quelques problèmes. Les conteneurs Docker sont devenus les véritables changeurs de jeu. Ils ont même abordé les problèmes qui existaient dans les machines virtuelles.
Lire : Kubernetes Vs. Docker : principales différences
Qu'est-ce que Docker ?
Il s'agit d'une plate-forme open source utilisée par les développeurs du monde entier pour exécuter, empaqueter et distribuer des applications. Docker rend le processus d'encapsulation des applications de la première étape à la dernière, très simple et efficace. Pour mieux comprendre Docker, vous devrez comprendre ce que sont les conteneurs et comment ils fonctionnent.
Un conteneur n'est rien d'autre qu'un package autonome, léger et exécutable d'une partie du logiciel fourni avec tout ce qui est nécessaire pour l'exécuter. Les conteneurs ne sont en aucun cas dépendants des plateformes. Ainsi, Docker est compatible avec les machines Windows et Linux. En outre, vous pouvez même exécuter Docker sur une machine virtuelle, si nécessaire. L'objectif fondamental que Docker vise à atteindre est de permettre aux développeurs d'utiliser une architecture distribuée pour exécuter des applications de microservices.

Contrairement aux machines virtuelles qui effectuaient l'abstraction du matériel, Docker monte d'un niveau et effectue l'abstraction d'un ensemble différent de ressources au niveau du système d'exploitation. Cela offre plusieurs avantages, notamment la séparation de l'infrastructure et la portabilité des applications, entre autres. En d'autres termes, contrairement aux machines virtuelles qui faisaient abstraction du serveur matériel, l'approche basée sur les conteneurs de Docker fonctionne en faisant abstraction du cœur du système d'exploitation. Il s'agit d'une excellente alternative à la virtualisation qui conduit à la création plus rapide d'instances légères. Docker est disponible en deux versions :
Édition Entreprise (EE):
Cette version est spécialement conçue pour les équipes informatiques et le développement d'entreprise. Cette version est utilisée pour développer, livrer et exécuter des applications.
Édition communautaire (CE) :
Cette version est utilisée par les individus et les petites équipes qui explorent des applications basées sur des conteneurs ou qui débutent avec Docker.
Lire : Idées et sujets de projet Full Stack
Flux de travail Docker
Dans cette section, nous allons nous intéresser au Docker Engine ainsi qu'à ses différents composants. Cela nous aidera à mieux comprendre le fonctionnement de Docker avant de passer à l'architecture Docker. Docker Engine est la puissance qui permet au développement d'exécuter diverses fonctions à l'aide de cette application basée sur des conteneurs. Vous pouvez utiliser les composants répertoriés ci-dessous pour créer, empaqueter, expédier et exécuter des applications.
1. Démon Docker
C'est le processus d'arrière-plan qui fonctionne en permanence pour vous aider à gérer les images, les volumes de stockage, les réseaux et les conteneurs. Il recherche toujours des demandes d'API Docker pour les traiter.
2. Interface de ligne de commande Docker
C'est un client d'interface qui interagit avec Docker Daemon. Il aide les développeurs à simplifier le processus de gestion des instances de conteneur. C'est l'une des principales raisons pour lesquelles les développeurs préfèrent Docker à d'autres applications similaires .

3. API de repos du moteur Docker
Il facilite les interactions entre le démon Docker et les applications. Un client HTTP est généralement requis pour accéder à ces API.
Architecture Docker
L'architecture Docker est une architecture client-serveur. Il comporte trois composants principaux qui sont mentionnés ci-dessous :
- Hôte Docker
- Client Docker
- Registre Docker
- Objets Docker
Dans la phase initiale, le client Docker interagit avec le démon, qui est chargé d'effectuer une grande partie du travail de développement, d'exécution et de distribution des conteneurs Docker.
Le démon Docker et le client peuvent s'exécuter sur un seul système ou le développeur peut utiliser un démon distant pour le connecter à un client Docker local. L'API Rest est utilisée pour établir la communication entre le démon Docker et le client. Cela peut être fait via une interface réseau ou des sockets UNIX.
Voyons maintenant en détail les composants de l'architecture Docker.
A lire aussi : Pourquoi devenir développeur Full Stack ?
1. Hôte Docker
Un hôte Docker est responsable de l'exécution du démon Docker. Docker Daemon traite les demandes d'API, y compris la construction de docker et l'exécution de docker, entre autres. Il gère également les images, les réseaux, les conteneurs et d'autres objets Docker. Les démons peuvent communiquer entre eux pour gérer différents services Docker.
2. Client Docker
Ce n'est rien d'autre que la méthode que les utilisateurs utilisent pour interagir avec Docker. Le client Docker envoie nos requêtes, telles que l'exécution de docker et les builds Docker au démon Docker. Une caractéristique très importante du client Docker est qu'il peut communiquer avec plusieurs démons.
3. Registre Docker
Un registre est une application côté serveur qui est évolutive et sans état. Il stocke non seulement les images Docker, mais permet également aux développeurs de les distribuer. Docker nous offre la possibilité de créer nos propres images, ou il existe des registres publics disponibles que nous pouvons utiliser. Ces registres incluent Docker Cloud et Docker Hub, entre autres.
La configuration de Docker est telle qu'il se tourne toujours vers Docker Hub et d'autres registres publics pour rechercher des images. Cependant, nous avons la possibilité de créer notre propre registre. Ainsi, nous pouvons extraire les images requises à l'aide de nos propres registres à l'aide des commandes docker run et docker pull. La commande Docker push envoie l'image requise au registre que nous avons créé.

4. Objets Docker
Nous utilisons et créons plusieurs objets en utilisant Docker. Ces objets incluent des conteneurs, des images, des plugins, des volumes, des réseaux et autres.
5. Images Docker
Une image Docker n'est rien d'autre qu'un modèle en lecture seule qui nous fournit les instructions nécessaires pour créer un conteneur. À de nombreuses reprises, une image a un lien avec une autre image. Ce qui différencie deux images, c'est la couche supplémentaire de personnalisation. Autrement dit, une image peut également être définie comme un instantané immuable d'un conteneur. Les images sont petites, légères et rapides.
6. Conteneurs Docker
Suivons une approche différente pour comprendre les conteneurs Docker. Ainsi, si une image pouvait être utilisée pour représenter une classe, un conteneur pourrait être son instance. En d'autres termes, un conteneur est un objet d'exécution. Nous pouvons créer, démarrer, déplacer, arrêter ou supprimer des conteneurs à l'aide de Docker CLI ou API. Les conteneurs peuvent également être attachés au stockage et connectés à un ou plusieurs réseaux. Selon l'état actuel d'un conteneur, nous pouvons également créer une nouvelle image.
Conclusion
Maintenant que vous savez ce qu'est l'architecture Docker et ses composants, vous êtes mieux placé pour comprendre l'augmentation de sa popularité. Il simplifie la gestion de l'infrastructure et contribue à rendre les instances plus rapides, plus légères et plus résilientes.
Si vous souhaitez en savoir plus sur le codage à pile complète, consultez le diplôme PG upGrad & IIIT-B en développement de logiciels à pile complète qui est conçu pour les professionnels en activité et offre plus de 500 heures de formation rigoureuse, plus de 9 projets et affectations, Statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.