Docker est un puissant outil DevOps pour mettre vos applications dans des conteneurs.
Où que vous utilisiez un conteneur, l'environnement, et toutes ses dépendances, sera identique. Docker est donc idéal pour exécuter des applications distribuées.
Docker est un outil open-source qui vous donne la possibilité de construire des conteneurs pour vos applications.
Il comprend un système d'exploitation, des bibliothèques et tout ce dont vous avez besoin pour faire fonctionner votre application. Vous pourrez ensuite déployer cette même application - et tout son environnement et ses dépendances - sur n'importe quelle machine.
La structure légère de Docker vous permet d'exécuter plusieurs conteneurs sur la même machine. Une image de conteneur est un ensemble léger, autonome et exécutable d'un logiciel qui comprend tout ce qui est nécessaire pour l'exécuter.
Caractéristiques principales de Docker
Les conteneurs Docker fonctionnant sur une seule machine partagent le noyau du système d'exploitation de cette machine. Ils démarrent instantanément et utilisent moins de puissance de calcul et de mémoire vive.
Les images Docker sont construites à partir de couches de systèmes de fichiers, et sont capables de partager des fichiers communs. Cela permet de réduire l'espace occupé par ces images sur le disque et de les télécharger beaucoup plus rapidement.
Les conteneurs Docker sont basés sur des standards ouverts et fonctionnent sur toutes les principales distributions *nix (Unix, Linux, etc. - y compris MacOS), Microsoft Windows et sur toute infrastructure, y compris les machines virtuelles, le bare-metal et le cloud.
Les conteneurs Docker isolent les applications les unes des autres et de l'infrastructure sous-jacente. Docker fournit une isolation par défaut solide, de sorte que vous pouvez limiter tout problème avec votre application à un seul conteneur au lieu d'une machine entière.
Les images de conteneurs sont des logiciels légers, autonomes et exécutables qui comprennent tout ce dont vous avez besoin pour les exécuter : code, temps d'exécution, outils système, bibliothèques système et paramètres.
Les logiciels conteneurisés fonctionneront toujours de la même manière, quel que soit l'environnement.
Les conteneurs isolent le logiciel de son environnement, c'est-à-dire les différences entre les environnements de développement et de mise en scène.
En fin de compte, Docker contribue à réduire les conflits entre les équipes qui exécutent des logiciels différents sur la même infrastructure.
Une note sur les conteneurs par rapport aux machines virtuelles :
o Les conteneurs virtualisent le système d'exploitation et le rendent plus portable
o Les machines virtuelles, en revanche, virtualisent le matériel.
o Les conteneurs sont une abstraction au niveau de la couche applicative qui regroupe le code et les dépendances. Les machines virtuelles sont une abstraction du matériel physique qui transforme un serveur en plusieurs.
o Là encore, les conteneurs ne sont pas des VM.