Je suis un passionné de technologie avec un accent particulier sur la définition de solutions Cloud Native à fort impact. Expert en pratiques Scrum & DevOps.
Wikimédia Commons
Pourquoi les dockers et les conteneurs sont importants à comprendre
Alors que les applications métier se développent rapidement, soit avec une approche native du cloud, soit que les charges de travail existantes migrent vers le cloud, les chefs d’entreprise/produits, les architectes logiciels, les développeurs et les ingénieurs d’exploitation ont du mal à ignorer deux technologies : Docker et Kubernetes..
Aujourd’hui, nous allons découvrir Docker. Cet article est destiné aux débutants qui recherchent une compréhension conceptuelle des conteneurs, pourquoi et comment les conteneurs sont utilisés, et les composants d’architecture de haut niveau sous-jacents de Docker.
Dans ce didacticiel Docker, je couvrirai un bref historique de la virtualisation et de la technologie des conteneurs, et j’examinerai l’architecture des composants Docker.
Termes et définitions clés
- Cloud computing: Disponibilité à la demande des ressources informatiques (CPU, mémoire, stockage)/plateformes/logiciels.
- Approche cloud native: Stratégie technologique pour considérer les solutions basées sur le cloud computing comme le premier choix pour le développement d’applications.
- Hyperviseur, machine virtuelle, conteneurs: Terminologies liées à la virtualisation (expliquées plus en détail dans la section suivante).
- Moteur Docker: Une technologie de moteur de conteneur (explorée en détail tout au long du tutoriel).
- Kubernetes: Une technologie d’orchestration de conteneurs (explorée dans ce tutoriel).
- API RESTful: Interface de programmation d’application (API) qui utilise le protocole RESTful.
- Microservices : Style architectural qui structure une application en un ensemble de services faiblement couplés.
- DevOps : Ensemble de pratiques pour briser les silos entre le développement et les opérations informatiques, optimisant ainsi le cycle de vie global du développement.
Virtualisation matérielle et conteneurs
En termes simples, la virtualisation matérielle utilise un logiciel (un hyperviseur) pour créer une couche au-dessus du matériel. Cette couche d’hyperviseur divise les ressources informatiques en plusieurs ordinateurs virtuels. Celles-ci sont communément appelées machines virtuelles (VM).
Chaque machine virtuelle fonctionne sur son propre système d’exploitation (OS) et pour les utilisateurs finaux, il semble qu’ils utilisent leur propre machine dédiée. La virtualisation matérielle (Figure 1) améliore considérablement l’utilisation efficace du matériel sous-jacent, offrant ainsi aux organisations un retour sur investissement plus élevé sur leur investissement matériel.
Chaque machine virtuelle nécessite son propre système d’exploitation complet, ce qui en fait un poids lourd. La conteneurisation pousse ce concept un peu plus loin.
Contrairement à un hyperviseur, un Container Engine (Figure 2) permet aux applications s’exécutant à l’intérieur d’un conteneur de partager les ressources du système d’exploitation hôte. Ainsi, ils sont très légers et offrent une utilisation du matériel encore meilleure par rapport à la virtualisation.
Qu’est-ce que Docker ?
Il existe plusieurs technologies de moteurs de conteneurs sur le marché, mais Docker Engine est de loin le plus populaire, à tel point que les mots Docker et « conteneurs » sont parfois utilisés de manière interchangeable.
Le site Web Docker définit la plate-forme de conteneurs Docker comme suit :
Docker est une plate-forme ouverte pour le développement, la livraison et l’exécution d’applications. Docker vous permet de séparer vos applications de votre infrastructure afin que vous puissiez livrer rapidement des logiciels.
Alors, sans plus tarder, plongeons dans les composants de la plate-forme Docker pour mieux l’apprécier.
Faites défiler pour continuer
Architecture des composants Docker
La plate-forme Docker utilise une architecture client-serveur (Figure 3). Le client Docker communique avec le serveur Docker à l’aide des API Docker. Le client envoie des commandes au serveur et le serveur exécute ces commandes.
Vous trouverez ci-dessous quelques exemples de commandes Docker.
docker build docker run docker pull
Examinons en détail chacun des composants d’architecture ci-dessus.
1. Serveur Docker
Le serveur Docker est l’hôte qui exécute Docker Daemon. Le démon écoute les commandes de requête provenant du client Docker et les exécute.
Le client et le démon Docker communiquent à l’aide des API Docker, qui ne sont rien d’autre que des API RESTful. De plus, le démon Docker gère également les objets Docker – images, conteneurs, etc.
2. Client Docker
Le client Docker est ce que vous utiliserez pour interagir avec le démon Docker. L’interface de ligne de commande (CLI) du client peut être installée sur votre machine locale et interagit avec un ou plusieurs démons Docker.
Les commandes docker que vous tapez sur la CLI sont envoyées à l’hôte Docker où le démon Docker les écoute et les exécute.
3. Images
Une image contient un ensemble d’instructions ainsi que toutes les dépendances dont une application a besoin pour s’exécuter dans un conteneur. En ce sens, les images sont des modèles pour créer des conteneurs et donc un ou plusieurs conteneurs peuvent être créés en utilisant la même image. Une image est créée en construisant un Dockerfile.
Un Dockerfile est un fichier texte qui contient un ensemble d’étapes/commandes nécessaires pour assembler une image. La commande build crée une image à partir de Dockerfile.
docker build
Vous pouvez soit créer votre propre image en écrivant et en créant un Dockerfile, soit extraire une image créée et publiée par d’autres, à partir du Docker Registry.
4. Registre Docker
Un registre Docker est un magasin d’images Docker. Lorsque vous exécutez les commandes push ou pull sur l’interface de ligne de commande, le démon Docker extrait ou envoie une image d’un registre configuré.
Docker Hub est un référentiel public d’images et Docker recherche par défaut des images sur Docker Hub. Vous pouvez également créer et configurer votre propre registre privé. Les commandes suivantes sont exécutées sur la CLI pour extraire ou pousser des images Docker.
docker pull docker push
5. Conteneurs
Un conteneur n’est rien d’autre qu’une instance en cours d’exécution d’une image. Les conteneurs sont gérés par le démon Docker. Vous pouvez interagir avec les conteneurs en exécutant des commandes sur la CLI.
Avantages des conteneurs Docker
Les conteneurs peuvent permettre aux entreprises et aux équipes informatiques de réduire le temps de mise sur le marché global, c’est-à-dire le temps nécessaire entre l’idéation et la réalisation d’une application logicielle.
L’intégration de la technologie de conteneur Docker dans votre architecture peut entraîner les avantages suivants :
Réflexions finales sur Docker
L’introduction de conteneurs Docker dans votre architecture revient à ajouter un nouveau composant technologique. Ainsi, en plus des avantages, il faut également être conscient des complexités que cela ajoutera à votre architecture et au processus de développement.
Les équipes prévoyant d’utiliser des conteneurs Docker doivent être prêtes à répondre aux préoccupations mentionnées ci-dessous.
Croissance exponentielle des conteneurs
Compte tenu de la nature de la technologie des conteneurs, le nombre de conteneurs Docker en cours d’exécution peut croître de manière exponentielle très rapidement. Par conséquent, des outils supplémentaires seront nécessaires pour l’orchestration, la gestion, la surveillance, etc. des conteneurs Docker.
Plusieurs outils existent sur le marché pour répondre à ces préoccupations, à savoir Kubernetes, Apache Mesos, Nomad, etc. Une planification et une recherche adéquates doivent permettre de sélectionner le bon outil et de l’ajouter à votre architecture de déploiement et d’exploitation.
Perfectionnement
Le développement d’applications de microservices distribuées déployées sur des conteneurs nécessitera une montée en compétence des équipes de développement, de test et d’exploitation. Un cursus de formation et un plan d’investissement doivent être mis en place pour monter en compétences vos ressources.
Risques de sécurité
Des stratégies doivent être planifiées et développées pour surmonter les risques de sécurité tels que :
- Empêcher ou gérer l’utilisation d’images Docker sécurisées à partir du registre Docker public
- Protégez-vous des cyber-attaquants qui pourraient abuser des conteneurs Docker avec des privilèges d’accès élevés
- Communication sécurisée entre les conteneurs Docker
DevOps
La conteneurisation n’aura plus de valeur que si vous mettez en œuvre un état d’esprit DevOps. DevOps est un sujet beaucoup plus vaste et dépasse le cadre de ce didacticiel. Les pratiques DevOps nécessiteront à la fois des changements culturels et technologiques à introduire au sein de vos équipes.
Cela nous amène à la fin de cet article. Dans ce tutoriel, j’ai fourni une couverture similaire à Kubernetes. Bonne lecture et apprentissage.
Ressources additionnelles
Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.
© 2021 Manhar Puric