Docker repose sur une architecture client/serveur. Vous trouverez ci-dessous la liste des principaux composants associés à Docker, ainsi que d’autres termes et outils Docker.
Hôte Docker : une machine physique ou virtuelle s’exécutant sur Linux (ou tout autre système d’exploitation compatible avec Docker Engine).
Docker Engine : une application client/serveur composée du démon Docker, d’une API Docker qui interagit avec le démon et d’une interface de ligne de commande (CLI) qui communique avec le démon.
Démon Docker : le démon Docker est un service qui crée et gère des images à l’aide des commandes du client. En d’autres termes, le démon Docker agit comme le centre de contrôle pour l’installation Docker.
Client Docker : le client Docker fournit l’interface de ligne de commande qui accède à l’API Docker (une API REST) pour communiquer avec le démon Docker par le biais de sockets Unix ou d’une interface réseau. Le client peut être connecté à un démon à distance. Autre option, exécuter les deux sur le même système informatique.
Objets Docker : les objets Docker sont les composants d’un déploiement Docker qui permettent d’emballer et de distribuer les applications. Ils associent images, conteneurs, réseaux, volumes, plug-ins et bien plus encore.
Conteneur Docker : les conteneurs Docker sont les instances en cours d’exécution des images Docker. Alors que les images Docker sont des fichiers en lecture seule, les conteneurs sont des contenus dynamiques, éphémères et exécutables. Les utilisateurs peuvent interagir avec eux, et les administrateurs peuvent ajuster leurs paramètres et conditions grâce aux commandes Docker.
Images Docker : les images Docker contiennent le code source de l’application exécutable et tous les outils, bibliothèques et dépendances dont le code de l’application a besoin pour s’exécuter en tant que conteneur. Lorsqu’un développeur exécute l’image Docker, elle devient une instance (ou plusieurs instances) du conteneur.
Les images Docker peuvent être créées en partant de zéro, mais la plupart des développeurs les extraient des référentiels courants. Plusieurs images Docker peuvent être créées à partir d’une seule image de base ; elles partageront les points communs de leur pile.
Les images Docker sont composées de couches, chacune correspondant à une version de l’image. Chaque fois qu’un développeur apporte des modifications à une image, une nouvelle couche supérieure est créée et celle-ci remplace la couche supérieure précédente en tant que version actuelle de l’image. Les couches précédentes sont enregistrées en vue d’une annulation ou pour être réutilisées dans d’autres projets.
Chaque fois qu’un conteneur est créé à partir d’une image Docker, une nouvelle couche appelée couche conteneur est créée. Les modifications apportées au conteneur, comme l’ajout ou la suppression de fichiers, sont enregistrées dans la couche conteneur, et ces modifications n’existent que pendant l’exécution du conteneur.
Ce processus itératif de création d’images permet d’améliorer l’efficacité globale, car plusieurs instances de conteneurs actives peuvent s’exécuter à partir d’une seule image de base. Dans ce cas, elles utilisent une pile commune.
Build Docker : une commande qui associe outils et fonctionnalités pour créer des images Docker.
Fichier Docker : chaque conteneur Docker commence par un simple fichier texte contenant des instructions pour créer l’image du conteneur Docker. Dockerfile automatise la création d’images Docker. Il s’agit essentiellement d’une liste d’instructions CLI que Docker Engine exécute pour assembler l’image. La liste des commandes Docker est longue, mais standardisée : les opérations Docker fonctionnent de la même manière, quels que soient le contenu, l’infrastructure et les autres variables d’environnement.
Documentation Docker : la bibliothèque officielle de ressources, manuels et guides Docker pour la création d’applications conteneurisées.
Docker Hub : Docker Hub6 est le référentiel public des images Docker, qui se présente comme la plus grande bibliothèque et communauté au monde pour les images de conteneurs7. Il contient plus de 100 000 images de conteneurs provenant de fournisseurs de logiciels commerciaux, de projets open source et de développeurs individuels. Docker Hub comprend des images produites par Docker, Inc., des images certifiées appartenant au registre de confiance Docker et des milliers d’autres images.
Tous les utilisateurs de Docker Hub peuvent partager leurs images à volonté. Ils peuvent également télécharger des images de base prédéfinies à partir du système de fichiers Docker comme point de départ pour tout projet de conteneurisation.
D’autres référentiels d’images existent, notamment GitHub8. GitHub est un service d’hébergement de dépôts bien connu pour ses outils de développement d’applications et comme plateforme favorisant la collaboration et la communication. Les utilisateurs de Docker Hub peuvent créer un dépôt qui peut contenir de nombreuses images. Le dépôt peut être public ou privé et lié à des comptes GitHub ou BitBucket.
Docker Desktop : une application pour Mac ou Windows qui comprend, entre autres, Docker Engine, le client Docker CLI, Docker Compose et Kubernetes. Docker Desktop permet également d’accéder à Docker Hub.
Registre Docker : un système de stockage et de distribution évolutif et open source pour les images Docker. Il permet aux développeurs de suivre les versions d’image dans les référentiels grâce au balisage à des fins d’identification. Le suivi et l’identification sont réalisés à l’aide de Git, un outil de contrôle de version.
Plug-in Docker : les développeurs utilisent des plug-ins pour rendre Docker Engine encore plus fonctionnel. Plusieurs plug-ins Docker prenant en charge l’autorisation, le volume et le réseau sont inclus dans le système de plug-in de Docker Engine ; des plug-ins tiers peuvent également être chargés.
Extensions Docker : les extensions Docker permettent aux développeurs d’utiliser des outils tiers dans Docker Desktop pour étendre ses fonctions. Parmi les extensions pour outils de développement, citons le développement d’applications, la sécurité ou encore l’observabilité Kubernetes.
Docker Compose : les développeurs peuvent utiliser Docker Compose pour gérer des applications multiconteneurs, où tous les conteneurs s’exécutent sur le même hôte Docker. Docker Compose crée un fichier YAML (.YML) qui spécifie les services inclus dans l’application et peut déployer et exécuter des conteneurs à l’aide d’une seule commande. La syntaxe YAML étant indépendante du langage, les fichiers YAML peuvent être utilisés dans des programmes écrits en Java, Python, Ruby et bien d’autres langages.
Les développeurs peuvent également utiliser Docker Compose pour définir des volumes persistants pour le stockage, spécifier des nœuds de base et documenter et configurer les dépendances de service.