GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment utiliser Docker de manière pratique (partie 1 - Introduction)

Partie 1 :Introduction à la terminologie

Préface

Il n'est pas rare que les premiers utilisateurs de concepts et de technologies nouvellement introduits soient totalement confus alors que ceux-ci peuvent fondamentalement changer les façons de développer et de fournir des services. Surtout quand tout le monde parle de quelque chose comme Docker, et à quel point c'est génial et révolutionnaire. Cette confusion se produit lorsque nous essayons des choses dès le début et que nous nous précipitons directement pour les tester sans saisir tout le concept et le contexte de cette technologie nouvellement introduite.

C'est pourquoi vous avez peut-être abandonné toute la tendance des conteneurs Linux, ou parce que vous avez lu un article controversé de partisans et de détracteurs. Dans cette première partie d'une série d'articles, nous ferons de notre mieux pour clarifier les choses et tout mettre dans la bonne perspective pour tout développeur, administrateur système, ingénieur Q/A ou même passionné qui a juste besoin de la bonne inspiration pour utiliser les conteneurs Linux et résoudre leurs problèmes informatiques particuliers.

Nous commencerons par le début, avec une description nécessaire des événements et concepts historiques, puis je montrerai comment nous pouvons commencer à travailler avec les conteneurs Docker. De cette façon, vous pourrez comprendre "ce qui a conduit à la création de conteneurs", "quels sont les éléments constitutifs" et "comment fonctionnent-ils".


Comment les conteneurs sont-ils apparus ?

Pendant de nombreuses années, les serveurs ont été utilisés tels quels, avec une seule configuration matérielle, contenant un seul système d'exploitation (OS en abrégé), pour fournir des milliers de sites Web et quelques premières versions de logiciels d'entreprise sur la même machine.

Pour accomplir la mise à l'échelle nécessaire, les entreprises devaient acheter du nouveau matériel et planifier soigneusement les étapes de toute nouvelle implémentation. À cette époque, l'automatisation en était à ses débuts et la plupart des configurations étaient effectuées à la main.

Virtualisation

Puis la virtualisation est arrivée, permettant aux utilisateurs d'utiliser le même serveur matériel afin de pouvoir générer plusieurs serveurs virtuels à des fins différentes et de les vendre individuellement. Cela a non seulement considérablement réduit les coûts de possession du matériel de serveur, mais a également fourni les moyens d'automatiser et de gérer facilement des centaines d'instances de serveur.

La virtualisation consiste en fait à assembler des composants matériels tels que le processeur, la RAM, les disques, les cartes réseau, etc., qui sont émulés par un logiciel spécial. C'est comme construire un PC, avec ses composants de base mentionnés ci-dessus, dans un système d'exploitation et les assembler pour qu'ils fonctionnent comme s'il s'agissait d'un vrai PC. De cette façon, le PC virtuel devient un "invité" à l'intérieur d'un PC réel qui, avec son système d'exploitation, est appelé un hôte.

Bien que la virtualisation matérielle ait été introduite il y a environ 10 ans, elle a été largement utilisée sur divers types de serveurs par les développeurs et les administrateurs système, en utilisant la fonctionnalité KVM (Kernel-based Virtual Machine) qui est intégrée au noyau Linux depuis 2007. Avec le "VT" d'Intel -x" et les extensions "AMD-V" d'AMD qui aident à créer un nombre illimité de systèmes d'exploitation virtualisés (limités uniquement par les ressources matérielles), chaque développeur pourrait créer à moindre coût plusieurs machines virtuelles (VM en abrégé) avec des systèmes d'exploitation, même avec différentes versions de eux. De cette façon, ils peuvent tester leurs applications sans avoir à acheter une toute nouvelle plate-forme ou plusieurs d'entre elles, selon le système d'exploitation dont ils ont besoin.

L'un des grands avantages de la virtualisation est la possibilité de créer des instantanés. Un instantané est l'état d'une machine virtuelle à un moment précis. Vous pouvez le considérer comme un état "gelé" de la machine virtuelle à un moment donné. De cette façon, un développeur ou un administrateur système peut créer une machine virtuelle, installer un système d'exploitation particulier et les outils dont il a besoin et créer un instantané de l'ensemble. Il peut ensuite commencer à tester, configurer ou toute tâche qu'il doit accomplir, puis revenir instantanément à l'instantané précédent, à tout moment.

Les machines virtuelles peuvent également être migrées d'une machine hôte à une autre et continuer leur état de fonctionnement sans aucune configuration spéciale. En effet, l'ensemble de la machine virtuelle est en fait constitué d'énormes fichiers généralement appelés images. Vous pouvez penser à des images, comme le fichier ISO de votre distribution Linux préférée. Comme le fichier ISO contient tous les composants essentiels pour exécuter un système d'exploitation complet à partir d'un USB/DVD en direct, de la même manière qu'une image de machine virtuelle contient le système d'exploitation et les composants matériels virtuels.

Tout ce qui précède a créé toute une industrie de sociétés d'hébergement de serveurs privés virtuels (VPS) où les clients pouvaient instantanément lancer des images préconfigurées de serveurs à toutes fins. Ces fournisseurs de VPS ont généralement 10 ou 20 instantanés de VM sur un serveur hôte principal qui sont clonés plusieurs fois par demande du client pour leur fournir les serveurs virtuels dont ils ont besoin

Conteneurs

Comme vous pouvez l'imaginer, une machine virtuelle est un système d'exploitation complet exécuté dans un système d'exploitation hôte. Les systèmes d'exploitation invités, bien qu'ils soient isolés, partagent et utilisent les ressources matérielles de la machine hôte. Parfois, plusieurs systèmes d'exploitation invités exécutent la même pile complète d'un système d'exploitation spécifique.

Cette situation a créé une opportunité pour les développeurs du noyau Linux et les pirates informatiques de proposer une idée appelée virtualisation de processus léger. Ainsi, au lieu d'utiliser un système d'exploitation complet, ils pourraient réduire les composants "inutiles" du système d'exploitation virtuel pour en créer une version minimale. Cela a conduit à la création de LXC (Linux Containers).

Avant de creuser plus profondément, nous devons mentionner que la virtualisation des processus légers n'est pas une nouveauté. Solaris a des zones, BSD a des prisons et il existe d'autres technologies similaires comme OpenVZ. Le problème est qu'ils changent fréquemment de nom ou d'objectif lorsque le même concept de base est utilisé sur d'autres projets. C'est vrai que tous ne sont pas pareils, mais les principes fondamentaux sont à peu près les mêmes. Ils veulent tous isoler, déployer et créer un moyen jetable de fournir des services logiciels sans avoir à tout reconstruire et à chaque fois de bas en haut.

Le projet LXC diffère des machines virtuelles susmentionnées en ce qu'il s'agit d'un environnement de virtualisation au niveau du système d'exploitation et non d'un environnement de virtualisation matérielle. Ils font tous les deux la même chose, mais LXC fournit une virtualisation au niveau du système d'exploitation via un environnement virtuel qui possède son propre espace de processus et de réseau, au lieu de créer une machine virtuelle à part entière. Par conséquent, un système d'exploitation virtuel LXC nécessite des ressources minimales et démarre en quelques secondes.

Comme vous pouvez le voir dans l'image suivante, l'Ubuntu virtuel LXC sur la gauche utilise 11 Mo dans une installation par défaut.

Docker

Comme d'habitude, les choses ne se sont pas arrêtées simplement en supprimant les parties inutiles d'un système d'exploitation. Diverses technologies ont vu le jour en repoussant encore plus loin les limites de la virtualisation des processus légers. En 2013, les développeurs de dotCloud (une société qui a ensuite changé son nom en Docker Inc.) ont introduit Docker.

Docker est un moteur open source dont l'objectif principal est d'automatiser le déploiement d'applications dans des conteneurs de logiciels et l'automatisation de la virtualisation au niveau du système d'exploitation sur Linux. Un conteneur docker, contrairement à une machine virtuelle et à lxc, ne nécessite ni n'inclut de système d'exploitation séparé. Au lieu de cela, il s'appuie sur les fonctionnalités du noyau Linux et utilise l'isolation des ressources.

Les conteneurs Docker sont créés à partir d'images Docker (rappelez-vous les instantanés). Vous pouvez imaginer un conteneur docker comme l'état en direct d'une application Web exécutée à partir d'un fichier iso. Mais cette fois l'iso, qui dans notre exemple est l'équivalent de l'image docker, ne contient que l'application et ses dépendances.

Une grande fonctionnalité de docker, dont nous parlerons dans la deuxième partie, est le fichier docker. Un fichier docker est la recette qui contient toutes les étapes nécessaires à la création d'une image docker. Il existe littéralement des tonnes de fichiers Docker "prêts à l'emploi" que vous pouvez personnaliser et utiliser tels quels.

Résumé

Comme vous pouvez l'imaginer, passer des serveurs à part entière à la virtualisation du système d'exploitation, puis aux conteneurs, consiste à supprimer le fardeau de la création, du déploiement et de la maintenance d'un système d'exploitation complet alors qu'il n'a besoin que de la couche application.

Avec cette introduction, nous avons essayé de vous présenter quelques événements fondamentaux qui nous ont conduit à la création des conteneurs Docker. J'ai également essayé de simplifier certains de ses concepts, afin que vous puissiez comprendre les différences entre les différentes technologies de virtualisation et où elles sont applicables.

La deuxième partie, qui sera publiée la semaine prochaine, montrera exactement comment nous pouvons installer et utiliser les conteneurs Docker de manière pratique, alors restez à l'écoute.


Ubuntu
  1. Comment installer et utiliser Docker dans Ubuntu 20.04

  2. Comment utiliser Docker Compose

  3. Comment utiliser un Dockerfile pour créer une image Docker

  4. Comment utiliser la commande Docker Inspect

  5. Comment configurer docker pour utiliser le proxy

Comment installer et utiliser Docker Compose sur Debian 9

Comment installer et utiliser Docker-Compose sur CentOS 7

Docker :Comment l'utiliser de manière pratique - Partie 3

Comment installer et utiliser Podman (Docker Alternative) sur Ubuntu 20.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment installer et utiliser Docker sur AlmaLinux 8