Architecture Docker: pourquoi est-ce important?

Ce blog traite de l'architecture du docker et de ses différents composants. Il met en évidence les fonctionnalités du docker qui nous indique la raison de sa popularité.

Beaucoup d'entre nous pensent que Docker fait partie intégrante de . Donc, derrière cet outil incroyable, il doit y avoir une architecture incroyable. Dans ce blog, je couvrirai tout ce que vous devez savoir sur l'architecture Docker. Voici les points dont je vais discuter ici:



  1. Virtualisation traditionnelle vs Docker
  2. Flux de travail de Docker
  3. Architecture Docker

Virtualisation traditionnelle contre Docker

Qu'est-ce qu'une VM (machine virtuelle)?

Une VM est un serveur virtuel qui émule un serveur matériel. Une machine virtuelle s'appuie sur le matériel physique du système pour émuler exactement le même environnement dans lequel vous installez vos applications. En fonction de votre cas d'utilisation, vous pouvez utiliser une machine virtuelle système (qui exécute un système d'exploitation entier en tant que processus, vous permettant de remplacer une machine réelle par une machine virtuelle), ou traiter des machines virtuelles qui vous permettent d'exécuter des applications informatiques seul dans le virtuel environnement.



Auparavant, nous avions l'habitude de créer des machines virtuelles, et chaque VM avait un système d'exploitation qui prenait beaucoup d'espace et le rendait lourd.

Qu'est-ce que Docker?

Docker est un projet open-source qui propose une solution de développement logiciel appelée conteneurs. Pour comprendre Docker, vous devez savoir ce que sont les conteneurs. Selon Docker , un conteneur est un package exécutable léger et autonome d'un logiciel qui comprend tout le nécessaire pour l'exécuter.



Les conteneurs sont indépendants de la plate-forme et, par conséquent, Docker peut fonctionner sur des plates-formes Windows et Linux. En fait, Docker peut également être exécuté dans une machine virtuelle si cela s'avère nécessaire. L'objectif principal de Docker est de vous permettre d'exécuter des applications de microservices dans une architecture distribuée.

Par rapport aux machines virtuelles, la plate-forme Docker fait passer l'abstraction des ressources du niveau matériel au niveau du système d'exploitation. Cela permet de réaliser les divers avantages des conteneurs, par ex. portabilité des applications, séparation des infrastructures et microservices autonomes.

En d'autres termes, alors que les machines virtuelles font abstraction de l'ensemble du serveur matériel, les conteneurs abstraits le noyau du système d'exploitation. Il s'agit d'une approche totalement différente de la virtualisation et se traduit par des instances beaucoup plus rapides et plus légères.



vm vs docker - architecture de docker - edureka

Flux de travail de Docker

Jetons d'abord un coup d'œil à Docker Engine et à ses composants afin d'avoir une idée de base du fonctionnement du système. Docker Engine vous permet de développer, assembler, expédier et exécuter des applications à l'aide des composants suivants:

  1. Démon Docker : Un processus d'arrière-plan persistant qui gère les images Docker, les conteneurs, les réseaux et les volumes de stockage. Le démon Docker écoute en permanence les requêtes de l'API Docker et les traite.

  2. API REST Docker Engine : Une API est utilisée par les applications pour interagir avec le démon Docker. Il est accessible par un client HTTP.

  3. CLI Docker : Un client d'interface de ligne de commande pour interagir avec le démon Docker. Cela simplifie considérablement la gestion des instances de conteneurs et est l'une des principales raisons pour lesquelles les développeurs aiment utiliser Docker.

Au début, le client Docker parle au démon Docker, qui effectue le gros du travail du bâtiment, en cours d'exécution, ainsi que la distribution de nos conteneurs Docker. Fondamentalement, le client et le démon Docker peuvent fonctionner sur le même système. Nous pouvons également connecter un client Docker à un démon Docker distant. De plus, en utilisant une API REST, le client et le démon Docker communiquent via des sockets UNIX ou une interface réseau.

Architecture Docker

L'architecture de Docker utilise un modèle client-serveur et se compose du client de Docker, de l'hôte Docker, des composants réseau et stockage et du registre / concentrateur Docker. Examinons chacun de ces éléments en détail.

quelle est la différence entre xml et html

Client de Docker

Les utilisateurs de Docker peuvent interagir avec Docker via un client. Lorsqu'une commande docker s'exécute, le client les envoie au démon dockerd, qui les exécute. L'API Docker est utilisée par les commandes Docker. Il est possible pour le client Docker de communiquer avec plus d'un démon.

Hôte Docker

L'hôte Docker fournit un environnement complet pour exécuter et exécuter des applications. Il comprend le démon Docker, les images, les conteneurs, les réseaux et le stockage. Comme mentionné précédemment, le démon est responsable de toutes les actions liées au conteneur et reçoit des commandes via la CLI ou l'API REST. Il peut également communiquer avec d'autres démons pour gérer ses services.

Objets Docker

1. Images

Les images ne sont rien d'autre qu'un modèle binaire en lecture seule qui peut créer des conteneurs. Ils contiennent également des métadonnées décrivant les capacités et les besoins du conteneur. Les images sont utilisées pour stocker et expédier des applications. Une image peut être utilisée seule pour créer un conteneur ou personnalisée pour ajouter des éléments supplémentaires afin d'étendre la configuration actuelle.

Vous pouvez partager les images de conteneurs entre les équipes au sein d'une entreprise à l'aide d'un registre de conteneurs privé ou les partager avec le monde entier à l'aide d'un registre public tel que Docker Hub. Les images sont l'élément central de l'expérience Docker car elles permettent la collaboration entre les développeurs d'une manière qui n'était pas possible auparavant

2. Conteneurs

Les conteneurs sont en quelque sorte des environnements encapsulés dans lesquels vous exécutez des applications. Le conteneur est défini par l'image et toutes les options de configuration supplémentaires fournies au démarrage du conteneur, y compris, sans s'y limiter, les connexions réseau et les options de stockage. Les conteneurs n'ont accès qu'aux ressources définies dans l'image, sauf si un accès supplémentaire est défini lors de la création de l'image dans un conteneur.

Vous pouvez également créer une nouvelle image en fonction de l'état actuel d'un conteneur. Étant donné que les conteneurs sont beaucoup plus petits que les machines virtuelles, ils peuvent être lancés en quelques secondes et se traduisent par une bien meilleure densité de serveurs

3. Réseaux

La mise en réseau Docker est un passage par lequel tous les conteneurs isolés communiquent. Il existe principalement cinq pilotes réseau dans le docker:

    1. Pont : Il s'agit du pilote réseau par défaut d'un conteneur. Vous utilisez ce réseau lorsque votre application s'exécute sur des conteneurs autonomes, c'est-à-dire plusieurs conteneurs communiquant avec le même hôte docker.

    2. Hôte : Ce pilote supprime l'isolation réseau entre les conteneurs Docker et l'hôte Docker. Vous pouvez l'utiliser lorsque vous n'avez pas besoin d'isolation réseau entre l'hôte et le conteneur.

    3. Recouvrir : Ce réseau permet aux services swarm de communiquer entre eux. Vous l'utilisez lorsque vous souhaitez que les conteneurs s'exécutent sur différents hôtes Docker ou lorsque vous souhaitez créer des services Swarm par plusieurs applications.

    4. Aucun : Ce pilote désactive tout le réseau.

    5. macvlan : Ce pilote attribue une adresse Mac aux conteneurs pour les faire ressembler à des périphériques physiques. Il achemine le trafic entre les conteneurs via leurs adresses mac. Vous utilisez ce réseau lorsque vous souhaitez que les conteneurs ressemblent à un périphérique physique, par exemple, lors de la migration d'une configuration de machine virtuelle.

4. Stockage

Vous pouvez stocker des données dans la couche inscriptible d'un conteneur, mais cela nécessite un pilote de stockage. Étant non persistant, il périt chaque fois que le conteneur ne fonctionne pas. De plus, il n'est pas facile de transférer ces données. En ce qui concerne le stockage persistant, Docker propose quatre options:

    1. Volumes de données : Ils offrent la possibilité de créer un stockage persistant, avec la possibilité de renommer les volumes, de répertorier les volumes et également de répertorier le conteneur associé au volume. Les volumes de données sont placés sur le système de fichiers hôte, en dehors du mécanisme de copie sur l'écriture des conteneurs et sont assez efficaces.

    2. Conteneur de volume : Il s'agit d'une approche alternative dans laquelle un conteneur dédié héberge un volume et pour monter ce volume sur d'autres conteneurs. Dans ce cas, le conteneur de volume est indépendant du conteneur d'application et vous pouvez par conséquent le partager entre plusieurs conteneurs.

    3. Montages d'annuaire : Une autre option consiste à monter le répertoire local d'un hôte dans un conteneur. Dans les cas mentionnés précédemment, les volumes devraient se trouver dans le dossier des volumes Docker, alors qu'en ce qui concerne les montages de répertoire, tout répertoire sur la machine hôte peut être utilisé comme source pour le volume.

    4. Plugins de stockage : Les plug-ins de stockage permettent de se connecter à des plates-formes de stockage externes. Ces plugins mappent le stockage de l'hôte vers une source externe telle qu'une matrice de stockage ou une appliance. Vous pouvez voir une liste des plugins de stockage sur la page Plugin de Docker.

Registre de Docker

Les registres Docker sont des services qui fournissent des emplacements à partir desquels vous pouvez stocker et télécharger des images. En d'autres termes, un registre Docker contient des référentiels Docker qui hébergent une ou plusieurs images Docker. Les registres publics comprennent deux composants, à savoir le Docker Hub et Docker Cloud. Vous pouvez également utiliser des registres privés. Les commandes les plus courantes lorsque vous travaillez avec des registres incluent: docker push, docker pull, docker run

Maintenant que vous avez compris l'architecture Docker, découvrez ceci par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation à la certification Edureka DevOps aide les apprenants à comprendre ce qu'est DevOps et à acquérir une expertise dans divers processus et outils DevOps tels que Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack et GIT pour l'automatisation de plusieurs étapes dans SDLC.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de cette «Architecture Docker» et nous vous recontacterons