Les outils de conteneurisation, dont Docker, est un mode de virtualisation et de mutualisation de serveur utilisé par de nombreux corps de métier de l'IT. Ils fournissent un modèle de déploiement basé sur les images pour faciliter le partage d'une application ou d'un ensemble de services ainsi que toutes leurs dépendances dans plusieurs environnements. Ces images en production deviennent des containers.
Ces conteneurs se partagent le même noyau de système d’exploitation et isolent les processus de l’application du reste du système. Pour faire simple, plutôt que de virtualiser le hardware comme l’hyperviseur, le container virtualise le système d’exploitation. Le container est donc** nettement plus efficient qu’un hyperviseur en termes de consommation des ressources système.** Concrètement, il est possible d’exécuter près de 4 à 6 fois plus d’instances d’applications avec un container qu’avec des machines virtuelles comme Xen ou KVM sur le même hardware.
La technologie Docker utilise le noyau Linux ainsi que ses fonctionnalités (comme les Cgroups et les espaces de noms) pour séparer des processus afin qu'ils s'exécutent de manière indépendante. On part d'une base qui est le système d'exploitation et on ajoute différentes briques conteneurisées qui sont les applications. Cette indépendance reflète l'objectif des conteneurs : exécuter plusieurs processus et applications séparément les uns des autres en autre termes isoler les applications déployées sur un même hôte ou sur un même cluster. Ceci permet d’éviter qu’elles interfèrent.
Docker automatise le déploiement de l'application (ou des ensembles combinés de processus qui la composent) dans un environnement de conteneur plus léger et plus simple qu’une machine virtuelle et peut donc démarrer et s’arrêter plus rapidement. Il est donc plus réactif, et adaptable aux besoins fluctuants liés à la scalabilité d’une application.
Scalabilité : Capacité d'augmenter ou de réduire la quantité de ressources informatiques selon les besoins pour répondre à l'évolution de la demande.
La technologie Docker :
La modularité permet de séparer un élément d'une application afin de le modifier ou de le réparer sans arrêter toute l'application. Les processus peuvent être partagés entre différentes applications.
Une Docker se compose de plusieurs séries de couches regroupées dans une seule image.
Une nouvelle couche est créée à chaque modification de l'image ou lorsqu'un utilisateur exécute une commande telle que run ou copy.
Les images sont ensuite mis en production sous forme de conteneurs.
Des repository, registry, dépôt hub contiennent de nombreux outils autours de cette technologie.
Un registre Docker est un système de stockage et de distribution open source évolutif pour les images Docker qui permet de les partager avec la communauté docker. Le registre nous permet de suivre les versions des images dans les référentiels, en utilisant le balisage pour l'identification. Cette opération s'effectue à l'aide de git, un outil de contrôle des versions. Il existe plusieurs référentiels d'images, notamment GitHub.
Le référentiel public d'images Docker que Docker revendique comme la « plus grande bibliothèque et communauté d'images de conteneurs au monde ». 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 pour les utiliser comme point de départ pour des projets de conteneurisation. Il existe d'autres référentiels d'images, notamment GitHub.
La technologie client-serveur permettant de créer et de conteneuriser des applications dans Docker. Essentiellement, il prend en charge toutes les tâches liées à l’exécution de votre application en conteneur.
Le démon Docker est un service qui crée et gère les images Docker à l'aide des commandes du client. Il sert essentiellement de centre de contrôle pour implémenter docker. Le serveur sur lequel s'exécute le démon Docker s'appelle l'hôte Docker.
Un paquet exécutable de logiciels qui comprend :
en bref les outils nécessaires pour créer et exécuter une application en tant que conteneur.
Ces images sont des modèles en lecture seule qui fournissent des instructions pour créer un conteneur.
Lorsque nous exécutons une image Docker, elle devient une ou plusieurs instances du conteneur.
Dans une image Docker, il est préférable de placer les couches les plus variables plus haut dans la pile. Ainsi, si l'on doit apporter un changement, nous n'aurons pas besoin de reconstruire l’image entière.
Dockerfile est la base sur laquelle tous les conteneurs sont construits. Il contient l’ensemble des commandes à exécuter afin de construire l’image à savoir le système d’exploitation de base du conteur, les langages utilisés, l’environnement et ses variables, l’emplacement des fichiers, etc. La création de Dockerfile se fait à l’aide des commandes CLI.
Le but de ces déclarations est de pouvoir automatiser la création de l’image du conteneur par la suite.
Zone de contenus actifs (1 ou plusieurs processus) isolée permettant à une application de s’exécuter sans affecter le reste du système.
les conteneurs Docker offrent plus d’avantages que les VM. Bien qu’ils isolent et allouent les ressources de manière similaire, les conteneurs sont généralement plus portables, efficaces et sécurisés.
Le Docker Volume est l’emplacement où l’on stocke les données utilisées par les conteneurs et celles générées par Docker. Ces données persisteront sur les conteneurs qui y font appel. Cela veut dire que les volumes n’interfèrent pas dans le cycle de vie du conteneur. En plus, nous pouvons les utiliser même si l’on exécute un conteneur Windows ou Linux.
https://tutorialshub.org/docker-commands/
*Capacité d'augmenter ou de réduire la quantité de ressources informatiques selon les besoins pour répondre à l'évolution de la demande