DockerQu'est-ce que Docker ?

Qu’est-ce que Docker ?

Docker est une plateforme de virtualisation légère qui repose sur trois concepts fondamentaux : les conteneurs, les images et les volumes.

L’image permet de créer un container normalisé et indépendant, qui utilise des données issues d’un volume.

🎯

En finir avec “mais ça marche sur mon poste !”, en normalisant l’environnement d’exécution et allégeant les ressources matérielles.

Concepts fondamentaux

Conteneurs

Les conteneurs sont des environnements d’exécution légers et autonomes qui encapsulent une application et toutes ses dépendances, y compris les bibliothèques, les fichiers binaires et les variables d’environnement. Les conteneurs sont conçus pour être portables et cohérents, ce qui signifie qu’ils peuvent s’exécuter de manière cohérente sur n’importe quel système compatible avec Docker, du développement à la production.

Les conteneurs offrent une isolation efficace, permettant à plusieurs applications de s’exécuter sur la même machine hôte sans interférence. Chaque conteneur a sa propre vue du système d’exploitation, mais ils partagent le même noyau du système d’exploitation de l’hôte. Cela les rend plus légers et plus rapides à démarrer par rapport aux machines virtuelles traditionnelles.

Images

Les images Docker sont des modèles immuables utilisés pour créer des conteneurs. Une image est une représentation binaire d’une application et de ses dépendances, prête à être exécutée. Les images sont construites à partir de fichiers appelés Dockerfiles, qui spécifient les étapes nécessaires pour créer l’image. Les images peuvent être partagées via un registre Docker, ce qui facilite la distribution et le déploiement d’applications.

Les images sont conçues pour être légères et réutilisables. Lorsque vous exécutez un conteneur à partir d’une image, vous créez une instance en lecture-écriture, ce qui signifie que vous pouvez apporter des modifications à l’environnement de l’application tout en préservant l’image sous-jacente.

Volumes

Les volumes Docker sont utilisés pour gérer le stockage des données persistantes entre les conteneurs et les redémarrages. Les volumes permettent de partager des données entre un conteneur et le système hôte, ainsi que de partager des données entre plusieurs conteneurs. Ils sont idéaux pour gérer des fichiers de configuration, des bases de données, des fichiers journaux et d’autres données nécessaires à l’application.

Les volumes sont également essentiels pour garantir la persistance des données, car les conteneurs sont éphémères par nature. Les données stockées dans un volume survivront à la suppression ou à l’arrêt d’un conteneur.

En résumé, Docker repose sur ces trois concepts clés : les conteneurs pour l’isolation et l’exécution d’applications, les images pour la création d’environnements d’exécution reproductibles, et les volumes pour la gestion du stockage des données. Cette approche modulaire et efficace fait de Docker un outil puissant pour la création, le déploiement et la gestion d’applications dans divers environnements informatiques.

Concept de la virtualisation légère et différences avec la virtualisation traditionnelle (VM)

La virtualisation légère, qui est au cœur de Docker, est un concept qui diffère fondamentalement de la virtualisation traditionnelle basée sur les machines virtuelles (VM). Voici comment cela fonctionne et pourquoi c’est si important :

Virtualisation Traditionnelle (VM) :

Hyperviseur : Dans la virtualisation traditionnelle, on utilise un hyperviseur (tel que VMware, VirtualBox ou Hyper-V) pour créer et gérer des machines virtuelles (VM). L’hyperviseur est une couche de logiciel qui s’exécute directement sur le matériel physique de la machine hôte.

Systèmes d’exploitation invités : Chaque VM exécute un système d’exploitation invité complet, avec son propre noyau. Cela signifie que chaque VM doit contenir un système d’exploitation complet, ce qui entraîne une utilisation significative des ressources.

Isolation : Les VM sont isolées les unes des autres, car elles utilisent des hyperviseurs pour émuler des ressources matérielles distinctes. Cette isolation est solide, mais elle peut être gourmande en termes de ressources.

Lourdeur : Les VM sont relativement lourdes en termes d’espace disque, de mémoire et de temps de démarrage en raison de la nécessité d’inclure un système d’exploitation complet dans chaque VM.

Virtualisation Légère (Docker) :

Conteneurs : Dans la virtualisation légère, on utilise des conteneurs. Les conteneurs sont des instances légères d’applications qui partagent le même noyau du système d’exploitation de la machine hôte.

Partage du noyau : Contrairement aux VM, les conteneurs partagent le même noyau du système d’exploitation de la machine hôte, ce qui les rend beaucoup plus légers en termes de ressources.

Isolation : Les conteneurs offrent une isolation plus légère que les VM, mais elle est suffisante pour garantir que les applications ne se perturbent pas mutuellement. Chaque conteneur a son propre système de fichiers et son propre espace de noms, ce qui crée une isolation au niveau des processus et des ressources.

Efficacité : Les conteneurs sont extrêmement efficaces en termes d’utilisation de la mémoire, de l’espace disque et du temps de démarrage. Étant donné qu’ils partagent le noyau, ils n’ont pas besoin de répliquer un système d’exploitation complet.

En résumé, la virtualisation légère, telle que mise en œuvre par Docker, repose sur l’idée d’utiliser des conteneurs légers qui partagent le même noyau du système d’exploitation de la machine hôte. Cela les rend beaucoup plus efficaces en termes de ressources par rapport aux machines virtuelles, tout en fournissant une isolation adéquate pour exécuter des applications de manière sécurisée et sans conflit. C’est l’une des raisons principales pour lesquelles Docker est devenu si populaire dans le domaine de la virtualisation et du déploiement d’applications.