Ordinateurs

Un guide pour débutants sur les conteneurs et Docker

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.

Les conteneurs Docker virtuels imitent les conteneurs d’expédition réels.

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).

A lire aussi :  Comment écrire des fractions dans Microsoft Word

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.

Figure 1 : Exemple d'un hyperviseur de type 2

Figure 1 : Exemple d’un hyperviseur de type 2

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.

Figure 2 : Moteur de conteneurisation

Figure 2 : Moteur de conteneurisation

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 
Figure 3 : Composants Docker

Figure 3 : Composants Docker

Examinons en détail chacun des composants d’architecture ci-dessus.

introductionau docker

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.

introductionau docker

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.

A lire aussi :  Comment renommer une clé USB

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.

introductionau docker

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 :

introductionau docker

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.

A lire aussi :  8 modèles de planificateur de notions (agenda quotidien, hebdomadaire et mensuel)

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 :

  1. Empêcher ou gérer l’utilisation d’images Docker sécurisées à partir du registre Docker public
  2. Protégez-vous des cyber-attaquants qui pourraient abuser des conteneurs Docker avec des privilèges d’accès élevés
  3. 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

Bouton retour en haut de la page