Qu'est ce que Docker ?
Docker est une plateforme open-source qui permet aux développeurs de construire, déployer et exécuter des conteneurs.
Les conteneurs combinent :
- Le code source de l'application
- Les bibliothèques de l'OS
- Les dépendances nécessaires pour exécuter l'application dans n'importe quel environnement.
Photo de José M. Alarcón sur Unsplash
La métaphore avec un porte conteneur est intéressante.
Les conteneurs se ressemblent d'extérieur. Ils possèdent les mêmes dimensions et les mêmes dispositifs d'attache et d'empilement.
Depuis l'intérieur d'un conteneur fermé, impossible d'accéder à l'extérieur.
Le terme Docker fait généralement référence à Docker Engine, le moteur d'exécution pour la construction et l'exécution des conteneurs.
Docker fait également référence à la société qui vend la version commerciale de Docker ou au projet open source Docker.
Docker a été créé en 2013 avant de devenir rapidement un incontournable dans le monde du développement logiciel.
Conteneurisation vs virtualisation
La conteneurisation de Docker est souvent comparée à de la virtualisation.
Le principe de base est le même : l'application conteneurisée est isolée du reste de la machine et ne peut pas sortir du conteneur, tout comme un système d'exploitation virtualisé ne peut pas sortir de sa machine virtuelle.
La conteneurisation va plus loin : Le conteneur n'embarque pas de système d'exploitation mais il isole l'application du reste de la machine hôte : processus, système de fichiers, réseau, ressources CPU et RAM : tout est délimité et isolé du reste.
La conteneurisation offre tous les avantages de la virtualisation, notamment l'isolation et l'évolutivité, ainsi que d'autres avantages :
- Poids
Contrairement aux machines virtuelles, les conteneurs n'embarquent pas le système d'exploitation. La taille d'un conteneur se mesure généralement en Mo (les VM en Go). - Portabilité
Les applications conteneurisées peuvent être écrites une seule fois et exécutées n'importe où.
Par rapport aux machines virtuelles, les conteneurs sont plus rapides et plus faciles à déployer, déplacer, orchestrer, etc.. - Efficacité
Avec les conteneurs, les développeurs peuvent exécuter plusieurs copies d'une application sur une même machine, sans atteindre les limites liées à l'utilisation de plusieurs machines virtuelles simultanées.
La différence peut être schématisée ainsi :
