Outils pour utilisateurs

Outils du site


reseau:docker:presentationdocker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
reseau:docker:presentationdocker [2023/11/26 21:55] – [Les limites des conteneurs Docker] techer.charles_educ-valadon-limoges.frreseau:docker:presentationdocker [2024/12/08 20:07] (Version actuelle) – [Utilisation de Docker] techer.charles_educ-valadon-limoges.fr
Ligne 1: Ligne 1:
 ====== Cours : Présentation de Docker ====== ====== Cours : Présentation de Docker ======
-===== La virtualisation complète d'un ordinateur ===== +===== Qu'est-ce que Docker ? ===== 
-{{   :reseau:docker:docker_11.png   |}} +Docker est une **plateforme open source** qui **automatise** le déploiement, la gestion et l’exécution d’applications dans des **conteneurs légers**.
-La virtualisation classique permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et de les exécuter sur le serveur hôte sous forme de machines virtuelles (VM). Ces VM intègrent elles-mêmes un système d’exploitation complet sur lequel les applications qu'elles contiennent sont exécutées. +
-L’hyperviseur est donc responsable de tous les échanges de données. Exécuter plusieurs machines virtuelles sur un même serveur demande de grosses performances et un nombre suffisant de ressources pour assumer plusieurs machines virtuelles. Le démarrage d’une machine virtuelle peut être plus ou moins long en fonction aussi de la technique utilisée (virtualisation complète ou paravirtualisation). +
-<WRAP center round info> +
-La virtualisation complète, la création d’une VM nécessite : +
-  l’**installation complète** d’un système d’exploitation qui intègre un grand nombre de couche logicielles afin de permettre l’exécution d’une diversité de services ou d’applications+
-  * l'installation des **aplications.**+
  
-Cependant l’application ou le service qui sera configuré ne nécessite qu’**une partie des fonctionnalités de l’OS**. Par exemple la mise en place d’un serveur DNS ne nécessite pas la présence de composants multimédia ou de programmation comme python +Un conteneur est : 
-</WRAP>+  * une **unité logicielle** 
 +  * qui **encapsule** une application et ses dépendances, 
 +  * garantissant ainsi sa **portabilité** et son exécution cohérente **quel que soit l’environnement** (Windows, Lonux, MacOsX, etc.).
  
-===== La virtualisation avec Docker===== +Docker est une **technologie de conteneurisation** reposant sur le **noyau Linux** et ses fonctionnalités de **virtualisation par conteneurs** (**LXC** pour Linux Containers), notamment : 
-{{  :si7:docker_03.png?400. |}} +  * le composant **cgroups** pour contrôler et limiter l’utilisation des ressources pour un processus ou un groupe de processus (utilisation de la RAMCPU entre autresassocié au système d’initialisation **systemd** qui permet de définir l’espace utilisateur et de gérer les processus associés ; 
-Les conteneurs Docker s'exécutant sur une machine hôte partagent le noyau du système d'exploitation de cette machine et font directement appel à celui-ci  pour exécuter leurs applications. Ils démarrent ainsi très rapidement et utilisent peu de ressources (processeurmémoire vive, etc.)+  les **espaces de noms** ou **namespaces** qui permettent de créer des environnements sécurisés de manière à isoler les conteneurs et empêcher par exemple qu’un groupe puisse **voir** les ressources des autres groupes.
-Du fait que les conteneurs n'embarquent pas de système d’exploitation et qu’ils peuvent partager des fichiers communs, ils sont très légers : cela réduit l'utilisation du disque, ils se migrent plus facilement dune machine physique à une autre et les téléchargements d'images sont beaucoup plus rapides +
-Par ailleurs, la technologie mise en œuvre isole les applications les unes des autres et de l'infrastructure sous-jacente.+
  
-===== A chaque service une VM dédiée ===== +Docker offre des outils pour utilise ces fonctionnalités de manière simplifiée pour permettre, entre autres : 
-Les pratiques courantes consistent à créer de nouvelles VM par duplication d’une image contenant un OS personnalisé et à assurer une **isolation forte** entre les VMs. Dans ce cas de figure on virtualise des systèmes dexploitation identiques sur un même hôte physique+  * la **duplication** et la **suppression** des conteneurs ; 
 +  * l**accessibilité** des conteneurs à travers la gestion des **API** et **CLI** ; 
 +  * la **migration** (à froid ou à chaud) de conteneurs.
  
-Mais cela représente une consommation importante de ressources disque et de calcul pour implémenter lapplication ou le service.+Un conteneur Docker **se construit** à partir dune **image**.
  
-===== Docker pour quoi faire ? ===== +Une image Docker est un **package léger, autonome et exécutable** d’un logiciel qui inclut tout ce qui est nécessaire pour l’exécuter :  
-La technologie de conteneur mise en œuvre par Docker  est une réponse à ces problématiques :  +  * **code** de lapplication,  
-  * Permettre la **création** de service sexécutant sur un **système d’exploitation identique**, +  * **environnement d’exécution** (runtime),  
-  * Partager une grande partie des **fonctionnalités** et des librairies de base du système d’exploitation, +  * **outils système et librairies**, etc. 
-  * Assurer une **isolation** entre les VMs+ 
-  * **Limiter** la consommation de ressources espace disque, mémoire, temps de mise en œuvre très réduit , administration et maintenance lors des mises à jour notamment+De nombreuses images sont disponibles sur : 
 +   * le **registre officiel** (appelé hub): https://hub.docker.com ; 
 +   de nombreux dépôts initiés par de **simples** utilisateurs. 
 +Il est bien sûr possible de proposer des images, d’en modifier d’autres et de déposer la modification sur le dépôt officiel. 
 + 
 + 
 +===== Comparaison de Docker avec une virtulisation classique ===== 
 +Lien : https://www.docker.com/what-container 
 + 
 +==== Utilisation d'un hyperviseur==== 
 + 
 +{{ :reseau:docker:docker_23.png |}} 
 + 
 + 
 +  * virtualisation d'une ou plusieurs machines physiques, 
 +  Les VM intègrent elles-mêmes un système d’exploitation complet sur lequel les applications qu’elles contiennent sont exécutées
 +  * hyperviseur responsable de tous les échanges de données. 
 +L'exécuttion de plusieurs machines virtuelles sur un même serveur demande de grosses performances et un nombre suffisant de ressources pour assumer plusieurs machines virtuelles.  
 + 
 +L’application ou le service qui sera configuré ne nécessite qu’**une partie des fonctionnalités de l’OS**. Par exemple la mise en place d’un serveur DNS ne nécessite pas la présence de composants multimédia ou de programmation comme python.  
 + 
 +Le démarrage d’une machine virtuelle peut être plus ou moins long en fonction aussi de la technique utilisée (virtualisation complète ou paravirtualisation). 
 + 
 +==== Utilisation de Docker ==== 
 + 
 +{{ :reseau:docker:docker_24.png |}} 
 + 
 +Les conteneurs Docker s’exécutent sur une machine hôte :  
 +  * partagent le noyau du système d’exploitation de cette machine 
 +  * font directement appel à celui-ci pour exécuter les applications. Les conteneurs démarrent ainsi très rapidement et utilisent peu de ressources (processeur, mémoire viveetc.). 
 +  * très légers : n’embarquent pas de système d’exploitation et qu’ils peuvent partager des fichiers communs 
 +    * réduit l’utilisation du disque, 
 +    * migrent plus facilement d’une machine physique à une autre 
 +    * téléchargements d’images sont beaucoup plus rapides. 
 +Par ailleurs, la technologie mise en œuvre isole les applications les unes des autres et de l’infrastructure sous-jacente.
  
 Docker permet des usages qu’il était difficilement envisageable auparavant.  Docker permet des usages qu’il était difficilement envisageable auparavant. 
Ligne 41: Ligne 71:
  
  
-Docker n’est ni un émulateur ni une solution de virtualisation. C’est un **logiciel client-serveur** basé sur des fonctionnalités de bas niveau du noyau Linux et ou de Windows. Si la virtualisation classique consiste à simuler le fonctionnement d’une machine physique en isolant les applications dans des systèmes d’exploitation situés dans des VMs différentes+Docker n’est ni un émulateur ni une solution de virtualisation. C’est un **logiciel client-serveur** basé sur des fonctionnalités de bas niveau du noyau Linux et ou de Windows. 
  
 L’approche de Docker consiste : L’approche de Docker consiste :
-   * à assurer l'isolation entre application +   * à assurer l'**isolation** entre application, 
-   * avec les fonctionnalités du système d’exploitation lui-même. +   * avec les **fonctionnalités** du système d’exploitation lui-même. 
 L'ordinateur contenant le système d’exploitation est central dans cette architecture et l’isolation est moins stricte.  L'ordinateur contenant le système d’exploitation est central dans cette architecture et l’isolation est moins stricte. 
  
reseau/docker/presentationdocker.1701032142.txt.gz · Dernière modification : 2023/11/26 21:55 de techer.charles_educ-valadon-limoges.fr