Présentation de l'architecture Docker et composants Docker [Pour les débutants]
Publié: 2020-12-31Si vous avez récemment découvert le monde des conteneurs, ce n'est probablement pas une mauvaise idée de comprendre les éléments sous-jacents qui fonctionnent ensemble pour offrir les avantages de la conteneurisation. Mais avant cela, il y a une question que vous pouvez poser. Quel problème les conteneurs résolvent-ils ?
Après avoir créé une application dans un cycle de vie de développement typique, le développeur l'envoie au testeur à des fins de test. Cependant, comme les environnements de développement et de test sont différents, le code ne fonctionne pas.
Maintenant, il existe principalement deux solutions à cela : soit vous utilisez une machine virtuelle, soit un environnement conteneurisé tel que Docker. Au bon vieux temps, les organisations déployaient des machines virtuelles pour exécuter plusieurs applications.
Alors, pourquoi ont-ils commencé à adopter la conteneurisation plutôt que les VM ? Dans cet article, nous fournirons des explications détaillées sur toutes ces questions.
Derrière cet outil fantastique, il doit y avoir une architecture tout aussi bien pensée. Avant de connaître les composants de l'architecture Docker, comprenons les conteneurs Docker et leur supériorité sur les machines virtuelles.
Table des matières
Conteneurs Docker
Docker est un projet open source qui permet de créer, de conditionner et d'exécuter des applications dans des environnements vaguement isolés et confinés appelés conteneurs.

Avec toute l'isolation et la sécurité fournies par la plate-forme Docker, elle vous permet d'exécuter plusieurs conteneurs simultanément sur un hôte particulier.
Raisons pour lesquelles les conteneurs Docker sont largement adoptés
- Il permet aux développeurs d'écrire du code localement et de partager le travail avec leur équipe à l'aide de conteneurs.
- Ils peuvent pousser leurs applications dans les environnements de test, qui sont les conteneurs et exécuter des tests automatisés.
- Lorsque des bogues sont détectés, ils peuvent être corrigés dans l'environnement de développement, puis redéployés.
- Obtenir un correctif est aussi simple que de transférer une image mise à jour vers l'environnement de production.
Avant d'approfondir le sujet, il faut différencier les pratiques de virtualisation traditionnelles de la conteneurisation nouvelle génération.
Machines virtuelles contre conteneurs Docker
Avant d'utiliser la conteneurisation pour nos pratiques DevOps, les machines virtuelles étaient au top. Nous avions l'habitude de créer des VM pour chaque application.
Alors que les machines virtuelles remplissaient presque toutes les nécessités, l'inconvénient de l'utilisation des machines virtuelles était encombrant et allouait toutes les ressources mémoire et matérielles requises à partir des machines hôtes sous-jacentes.
Cependant, cela a été facilement évité avec la conteneurisation car les conteneurs fournissent une virtualisation au niveau du système d'exploitation et nécessitent généralement moins de mémoire. Ainsi, il est devenu populaire et a finalement été adopté par la communauté DevOps.
Source des images
Le diagramme ci-dessus décrit en quoi les architectures des VM et des conteneurs diffèrent et pourquoi les conteneurs ont maintenant dépassé les VM pour les processus de développement quotidiens. Contrairement aux machines virtuelles, les conteneurs reposent sur les moteurs de conteneurs pour fournir une virtualisation au niveau du système d'exploitation, économisant ainsi de nombreuses ressources.
Moteur Docker
Avant d'aborder les différents composants architecturaux de Docker, il est essentiel de comprendre le workflow de Docker. Jetons un coup d'œil au Docker Engine et à ses différentes parties, ce qui nous donnera une idée du fonctionnement du système Docker. Le moteur Docker est principalement une application client-serveur typique avec trois composants principaux.
Serveur (Démon)
Le démon Docker est un processus continu qui s'exécute en arrière-plan et gère tous les objets Docker. Il écoute les requêtes de l'API Docker émises par le client et les traite en continu.
API de repos
C'est l'interface que les clients Docker utilisent pour interagir avec le démon Docker. Les clients peuvent parler au démon via l'API et lui fournir des instructions.
Client
Le client Docker est une interface de ligne de commande (CLI) qui peut interagir avec le démon. Il simplifie l'ensemble du processus de gestion des conteneurs.
Source des images
Le client Docker (qui peut être un client HTTP tel qu'une CLI) communique avec le démon, qui effectue la lourde tâche de créer, d'exécuter et de partager des conteneurs. Le client et le démon peuvent soit s'exécuter sur la même machine, soit connecter un client à un démon distant. Le client et le démon communiquent entre eux à l'aide d'une API Rest via des sockets ou une interface réseau. Le client Docker aide les utilisateurs à gérer les objets Docker tels que les conteneurs, les images, les volumes, etc. En savoir plus sur les projets Docker

Inscrivez-vous aux cours de développement de logiciels des meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Composants architecturaux
Comme indiqué précédemment, Docker utilise une architecture client-serveur, où le client communique avec le démon via une API Rest. L'architecture Docker se compose de plusieurs composants, comme indiqué ci-dessous.
Source des images
Démon
Il écoute les requêtes API initiées par les clients et gère les objets Docker, y compris les conteneurs, les images, les volumes et les réseaux. Il peut également communiquer avec d'autres démons pour gérer les services Docker, en particulier pour gérer de grands réseaux Docker.
Client
Les utilisateurs Docker peuvent communiquer avec le démon à l'aide du client Docker. Les utilisateurs exécutent des commandes telles que « Docker run… » à l'aide d'un client tel que CLI qui transmet ensuite ces commandes à Docker (démon), les exécutant finalement. Le client Docker communique avec plusieurs démons.
Registres
Il stocke les images Docker et peut être public ou privé. Docker est configuré pour rechercher des images par défaut sur Docker Hub. Lorsque le client émet une commande d'extraction ou d'exécution, les images sont extraites des référentiels.
Objets Docker
Lorsque nous travaillons avec Docker, nous interagissons avec plusieurs objets tels que des conteneurs, des images, des volumes, des réseaux, etc.
Certains de ces objets sont
Images
Il s'agit d'un modèle en lecture seule et contient des instructions pour créer des conteneurs. Il contient également des métadonnées décrivant les fonctionnalités du conteneur. Les utilisateurs peuvent extraire des images du registre Docker et créer des couches d'images inscriptibles par-dessus pour créer des images personnalisées adaptées aux exigences de leur application. Certaines idées populaires incluent Ubuntu, Nginx, MySQL, etc. Ces idées peuvent être partagées entre les équipes, ce qui les aide à travailler en collaboration sur une application.
Conteneurs
Les conteneurs sont des instances d'images qui fournissent des environnements isolés pour les applications. Ils n'ont accès qu'aux ressources définies par les images utilisées pour les construire.
Réseau
Docker Networks permet à des conteneurs isolés sur le même réseau de communiquer et de partager des ressources. Certains réseaux fournis par Docker incluent un pont, un hôte, une superposition, Macvlan, etc.
Espace de rangement
Docker vous permet de stocker des données dans la couche de conteneur inscriptible à l'aide de pilotes. Docker propose quatre options de stockage persistant : les volumes Docker, les conteneurs de volumes, les montages de répertoires et les plug-ins de stockage.
L'option de stockage la plus utilisée est les volumes. Ils sont placés sur le système de fichiers hôte et permettent à plusieurs conteneurs de partager et d'écrire des données à l'intérieur de ces volumes.
Conclusion
Docker utilise un ensemble de technologies de pointe sous-jacentes pour fournir des services de conteneurisation efficaces à ses utilisateurs. Il ne fait aucun doute que ces dernières années, Docker a commencé à gagner du terrain au sein de la communauté des développeurs et continuera de le faire dans les années à venir.
En raison du large éventail d'avantages fournis par les conteneurs tels que l'efficacité des ressources, l'évolutivité, etc., il sécurise à juste titre sa position au-dessus du pont.
Dans cet article, nous avons abordé certains des concepts les plus essentiels de Docker tels que le workflow Docker, son architecture et les technologies sous-jacentes, les différents objets Docker tels que les conteneurs, les images, les registres, les réseaux, etc.
Vous êtes maintenant sur la bonne voie pour plonger profondément dans le monde magnifique des conteneurs Docker. Vous devriez maintenant mieux comprendre comment différentes ressources Docker fonctionnent ensemble pour vous fournir un ensemble de fonctionnalités qui vous permettraient de créer, déployer et partager vos applications de manière transparente.
Apprendre l'architecture Docker avec upGrad
Commencez votre parcours de création d'applications à un rythme accéléré avec upGrad.
upGrad Education Pvt. propose un cours exclusif de spécialisation en développement de logiciels dans DevOps, qui prépare les aspirants à être absorbés par les grands géants de l'informatique.

Faits saillants du cours
Le programme Executive PG de upGrad en développement de logiciels de spécialisation en Big Data est un cours en ligne soigneusement conçu et divisé en 12 mois.
Dans ce programme, vous allez
- Obtenez un accès exclusif au contenu Data Science et Machine Learning
- Travailler sur des projets et des missions en direct
- Bénéficiez d'un accompagnement de carrière à 360 degrés
- Apprenez dix langages et outils de programmation
- Obtenez un mentorat étudiant dédié
Préparez-vous au développement d'applications DevOps avec upGrad.
Pourquoi attendre
Postuler aujourd'hui!
