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édentes Révision précédente
Prochaine révision
Révision précédente
reseau:docker:presentationdocker [2023/11/26 21:46]
techer.charles_educ-valadon-limoges.fr
reseau:docker:presentationdocker [2023/11/26 21:55] (Version actuelle)
techer.charles_educ-valadon-limoges.fr [Les limites des conteneurs Docker]
Ligne 1: Ligne 1:
 ====== Cours : Présentation de Docker ====== ====== Cours : Présentation de Docker ======
 ===== La virtualisation complète d'un ordinateur ===== ===== La virtualisation complète d'un ordinateur =====
-{{:reseau:docker:docker_11.png?400. |}}+{{   :reseau:docker:docker_11.png   |}}
 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. 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). 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. 
 +</WRAP>
  
-{{ :si7:docker_03.png?400|}}+===== La virtualisation avec Docker===== 
 +{{  :si7:docker_03.png?400|}}
 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 (processeur, mémoire vive, etc.). 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 (processeur, mémoire vive, etc.).
 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 d’une machine physique à une autre et les téléchargements d'images sont beaucoup plus rapides 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 d’une 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. 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 =====
 +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 d’exploitation identiques sur un même hôte physique. 
  
-Avec la virtualisation complète, la création d’une VM nécessite : +Mais cela représente une consommation importante de ressources disque et de calcul pour implémenter l’application ou le service.
-  * 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.  +
- +
-Les pratiques courantes consistent également à 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 d’exploitation identiques sur un même hôte physique. Mais cela représente une consommation importante de ressources disque et de calcul pour implémenter l’application ou le service.+
  
 +===== Docker pour quoi faire ? =====
 La technologie de conteneur mise en œuvre par Docker  est une réponse à ces problématiques :  La technologie de conteneur mise en œuvre par Docker  est une réponse à ces problématiques : 
   * Permettre la **création** de service s’exécutant sur un **système d’exploitation identique**,   * Permettre la **création** de service s’exécutant sur un **système d’exploitation identique**,
   * Partager une grande partie des **fonctionnalités** et des librairies de base du système d’exploitation,   * Partager une grande partie des **fonctionnalités** et des librairies de base du système d’exploitation,
-  * Assurer une **isolation** forte entre les VMs.+  * 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.    * **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. 
  
Ligne 34: Ligne 39:
  
 C’est le principe des **micro-services** en facilitant la création de conteneurs Docker pour chaque service ou applications à provisionner selon les besoins.  C’est le principe des **micro-services** en facilitant la création de conteneurs Docker pour chaque service ou applications à provisionner selon les besoins. 
 +
  
 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. 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. 
Ligne 52: Ligne 58:
 Le **montage de volume** permet la **persistance des données** des conteneurs. Le **montage de volume** permet la **persistance des données** des conteneurs.
 </WRAP> </WRAP>
 +
 +===== Les limites des conteneurs Docker =====
 +
 +Les conteneurs Docker ont quelques limites :
 +  * **isolement relatif avec le système d’exploitation hôte**, les conteneurs peuvent être plus vulnérables, car ils partagent un noyau et des composants systèmes et leur fonctionnement exige déjà un niveau d'autorisation élevé (généralement l'accès root dans les environnements Linux) : si toute l’architecture est basée sur Docker et si le système hôte est attaqué tous les services seront « accessibles » et exposés plus facilement et rapidement aux attaques. À noter que les plateformes de conteneurs évoluent dans le sens d'une plus grande sécurisation en matière d’isolement et de séparation des droits des OS ;
 +  * **attribution moins fine et stricte des ressources système et multiplication facile des conteneurs**, ce qui rend possible une consommation d’une grande quantité de ressources sans s’en rendre compte ;
 +  * **très forte dépendance entre les conteneurs et le système hôte** qui fait qu’un conteneur Linux ne peut être exploité nativement que sur Linux (idem avec un conteneur Windows qui ne peut être exécuté que sur Windows) même si les choses commencent à évoluer.
 +
 +===== Comment fonctionne Docker =====
  
 Docker se compose : Docker se compose :
 +
   * d’un client,    * d’un client, 
   * d’une API,   * d’une API,
reseau/docker/presentationdocker.1701031591.txt.gz · Dernière modification: 2023/11/26 21:46 de techer.charles_educ-valadon-limoges.fr