Docker est une plateforme de virtualisation par conteneur qui permet de créer, de déployer et de gérer des applications de manière portable et reproductible.
Fonctionnement de Docker
Docker utilise un seul système d’exploitation GNU/Linux.
Il s’appuie sur les fonctionnalités bas niveau du noyau Linux pour créer et gérer des conteneurs.
Un conteneur est une unité logicielle qui contient tout ce dont une application a besoin pour s’exécuter, y compris le code, les bibliothèques, les outils système et les données de configuration.
Pour créer et gérer ces différentes machines virtuelles que sont ces conteneurs, Docker a recours à un logiciel hyperviseur.
Dans le cas d’une installation avec Docker Desktop, l‘hyperviseur est utilisé pour créer des machines virtuelles légères appelées « conteneurs ». Docker Desktop inclut un hyperviseur intégré, ce qui signifie qu’il n’est pas nécessaire d’installer un logiciel d’hyperviseur séparé.
Les conteneurs sont isolés les uns des autres, par le biais des namespaces Linux ce qui permet de les exécuter de manière sûre et fiable sur n’importe quel système d’exploitation Mac, Windows ou Linux.
Docker fait également usage des « control groups » (cgroups). Ces fonctionnalités Linux permettent de restreindre l’accès aux ressources pour des processus spécifiques. Ainsi, Docker répartit les ressources système, telles que la RAM, le CPU, l’accès réseau, et la lecture/écriture sur les disques, entre tous les conteneurs.
De plus Docker utilise des systèmes de fichiers Union File System avec des couches. Imaginez que vous avez une pile de feuilles de papier. Chaque feuille de papier représente une couche d’une image Docker.
Les systèmes de fichiers Union combinent ces couches en une seule pile, où les couches supérieures écrasent les couches inférieures. Si vous modifiez une couche, les systèmes de fichiers Union ne copient que les différences entre la couche modifiée et la couche précédente.
Cela permet de réduire la taille des images Docker et d’accélérer leur chargement.
L’intérêt de Docker
Docker utilise le même système d’exploitation pour tous ses conteneurs, ce qui les rend plus légers et plus efficaces.
Une machine virtuelle, quant à elle, utilise son propre système d’exploitation, ce qui la rend plus lourde et plus gourmande en ressources.
Les principales composants de Docker
1. Le moteur Docker (Docker Engine) : Le moteur Docker est le composant principal de la plateforme Docker. Il est responsable de l’exécution des conteneurs et de la gestion de leurs ressources.
Il est composé de 3 composants principaux :
- Le démon Docker (Server dockerd) : Le démon Docker est un processus qui s’exécute en arrière-plan sur le serveur sur lequel Docker est installé. Il est responsable de la gestion des images, des conteneurs, des réseaux et des volumes de stockage
- L’API Docker : L’API Docker est un ensemble de fonctions et de procédures qui permettent aux utilisateurs d’interagir avec le démon Docker. Elle est utilisée par la CLI Docker, les outils tiers et les applications personnalisées.
- Le client Docker : C’est une interface de ligne de commande (CLI) qui permet aux utilisateurs de créer, de gérer et d’exécuter des conteneurs Docker. Le client Docker traduit les commandes entrées par l’utilisateur en requêtes pour l’API REST du démon Docker.
2. Image Docker : Une image Docker est un package autonome qui comprend le code de l’application, ses dépendances, le système d’exploitation, et d’autres éléments nécessaires à son exécution. Les images sont utilisées comme base pour créer des conteneurs.
Une image Docker est comme un blueprint, un modèle avec une structure prédéfie, pour un conteneur Docker. Elle contient toutes les instructions nécessaires pour créer un conteneur, y compris les fichiers, les bibliothèques et les configurations.
Pour créer une image Docker, vous devez utiliser un fichier Dockerfile. Le Dockerfile est un fichier texte qui contient les instructions nécessaires pour créer l’image.
3. Conteneur Docker : C’est une instance exécutable d’une image. Il encapsule l’application et toutes ses dépendances, garantissant que l’application fonctionnera de manière cohérente, indépendamment de l’environnement.
Il est possible de générer plusieurs conteneurs à partir d’une image.
Pour créer, démarrer, arrêter, déplacer ou supprimer un conteneur, vous devez utiliser le CLI Docker
4. Les volumes : Ils permettent aux conteneurs de stocker des données. Ils sont initialisés lors de la création d’un conteneur et permettent de persister et de partager des données d’un conteneur.
Persister des données signifie que ces données continueront d’exister même après l’arrêt ou la suppression du conteneur auquel elles sont associées.
Les volumes sont des dossiers partagés entre le conteneur et l’hôte. Ils sont créés et gérés par Docker et ne font pas partie du système de fichiers du conteneur.
Écosystème Docker
Docker Desktop
Docker Desktop est une application de bureau qui facilite l’utilisation de Docker sur les ordinateurs portables et les postes de travail. Il est disponible pour Windows, macOS et Linux.
Docker Engine
Docker Engine est un logiciel qui permet de créer, de déployer et d’exécuter des applications dans des conteneurs.
Docker Hub
Docker Hub est un registre public d’images Docker. Il contient des millions d’images créées par la communauté Docker. Vous pouvez utiliser Docker Hub pour rechercher, télécharger et partager des images Docker.
Docker Enterprise Edition
Docker Enterprise Edition est une version commerciale de Docker Engine. Il offre des fonctionnalités supplémentaires pour les entreprises, telles que la sécurité avancée, la gestion du cycle de vie et la prise en charge.