• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Familiarisons-nous avec l'architecture Docker et ses composants essentiels.

    Je suppose que vous avez une compréhension de base de Docker. Sinon, vous pouvez vous référer à l'article précédent.

    Je crois que vous comprenez l'importance de Docker dans DevOps. Maintenant, derrière cet outil fantastique, il doit y avoir une architecture étonnante et bien pensée. N'est-ce pas?

    Mais avant d'en parler, permettez-moi de vous présenter le système de virtualisation précédent et actuel.

    Virtualisation traditionnelle ou nouvelle génération

    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.

    Désormais, dans le cas du conteneur de docker, vous disposez d'un seul système d'exploitation et les ressources sont partagées entre les conteneurs. Par conséquent, il est léger et démarre en quelques secondes.

    Traditionnel vs nouvelle génération

    Architecture Docker

    Vous trouverez ci-dessous le schéma simple d'une architecture Docker.

    Architecture Docker

    Laissez-moi vous expliquer les composants d'une architecture docker.

    Docker Engine

    C'est la partie centrale de tout le système Docker. Docker Engine est une application qui suit architecture client-serveur. Il est installé sur la machine hôte. Il existe trois composants dans le moteur Docker:

    • Serveur: C'est le démon docker appelé docker. Il peut créer et gérer des images de docker. Conteneurs, réseaux, etc.
    • API de repos: Il est utilisé pour indiquer au démon docker ce qu'il doit faire.
    • Interface de ligne de commande (CLI): C'est un client qui sert à entrer commandes docker.

    Client 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. Le client Docker peut communiquer avec plus d'un démon.

    Registres Docker

    C'est l'emplacement où les images Docker sont stockées. Il peut s'agir d'un registre docker public ou d'un registre docker privé. Docker Hub est l'emplacement par défaut des images docker, le registre public de ses magasins. Vous pouvez également créer et exécuter votre propre registre privé.

    Lorsque vous exécutez des commandes docker pull ou docker run, l'image docker requise est extraite du registre configuré. Lorsque vous exécutez la commande push docker, l'image docker est stockée dans le registre configuré.

    Objets Docker

    Lorsque vous travaillez avec Docker, vous utilisez des images, des conteneurs, des volumes, des réseaux; ce sont tous des objets Docker.

    Images

    Les images Docker sont des modèles en lecture seule avec des instructions pour créer un conteneur Docker. L'image Docker peut être extraite d'un hub Docker et utilisée telle quelle, ou vous pouvez ajouter des instructions supplémentaires à l'image de base et créer une image Docker nouvelle et modifiée. Vous pouvez créer vos propres images de menu fixe en utilisant également un fichier docker. Créez un fichier docker avec toutes les instructions pour créer un conteneur et l'exécuter; il créera votre image de menu fixe personnalisée.

    L'image Docker a une couche de base en lecture seule et la couche supérieure peut être écrite. Lorsque vous modifiez un fichier docker et que vous le reconstruisez, seule la pièce modifiée est reconstruite dans la couche supérieure.

    Conteneurs

    Une fois que vous avez exécuté une image Docker, elle crée un conteneur Docker. Toutes les applications et leur environnement s'exécutent à l'intérieur de ce conteneur. Vous pouvez utiliser l'API ou la CLI Docker pour démarrer, arrêter, supprimer un conteneur Docker.

    Voici un exemple de commande pour exécuter un conteneur docker ubuntu:

    docker run -i -t ubuntu /bin/bash

    Volumes

    Les données persistantes générées par docker et utilisées par les conteneurs Docker sont stockées dans des volumes. Ils sont entièrement gérés par docker via Docker CLI ou Docker API. Les volumes fonctionnent à la fois sur les conteneurs Windows et Linux. Plutôt que de conserver les données dans la couche inscriptible d'un conteneur, c'est toujours une bonne option d'utiliser des volumes pour cela. Le contenu du volume existe en dehors du cycle de vie d'un conteneur, donc l'utilisation de volume n'augmente pas la taille d'un conteneur.

    Vous pouvez utiliser l'indicateur -v ou –mount pour démarrer un conteneur avec un volume. Dans cet exemple de commande, vous utilisez un volume geekvolume avec un conteneur geekflare.

    docker run -d --name geekflare  -v geekvolume:/app nginx:latest

    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. Il est utilisé lorsque vous n'avez besoin d'aucune isolation réseau entre l'hôte et le conteneur.
    3. Recouvrir: Ce réseau permet aux services swarm de communiquer entre eux. Il est utilisé lorsque les conteneurs s'exécutent sur différents hôtes Docker ou lorsque les services Swarm sont formés 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. Le trafic est acheminé entre les conteneurs via leurs adresses Mac. Ce réseau est utilisé lorsque vous souhaitez que les conteneurs ressemblent à un périphérique physique, par exemple, lors de la migration d'une configuration de VM.

    Conclusion

    J'espère que cela vous donne une idée de l'architecture Docker et de ses composants essentiels. Naviguez dans Docker pour en savoir plus et si vous souhaitez obtenir une formation pratique, consultez ceci Cours de maîtrise Docker.