reseau:docker:presentationdocker
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
reseau:docker:presentationdocker [2023/11/26 21:46] – techer.charles_educ-valadon-limoges.fr | reseau: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 ? ===== |
- | {{: | + | Docker est une **plateforme open source** qui **automatise** le déploiement, la gestion |
- | La virtualisation classique permet, via un hyperviseur, | + | |
- | 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). | + | |
- | {{ :si7: | + | Un conteneur est : |
- | Les conteneurs Docker s' | + | |
- | Du fait que les conteneurs n' | + | * qui **encapsule** une application |
- | Par ailleurs, la technologie mise en œuvre isole les applications les unes des autres et de l' | + | * garantissant |
+ | Docker est une **technologie de conteneurisation** reposant sur le **noyau Linux** et ses fonctionnalités de **virtualisation par conteneurs** (**LXC** pour Linux Containers), | ||
+ | * le composant **cgroups** pour contrôler et limiter l’utilisation des ressources pour un processus ou un groupe de processus (utilisation de la RAM, CPU entre autres) associé au système d’initialisation **systemd** qui permet de définir l’espace utilisateur et de gérer les processus associés ; | ||
+ | * 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. | ||
- | Avec la virtualisation complète, la création d’une VM nécessite | + | Docker offre des outils pour utilise ces fonctionnalités de manière simplifiée pour permettre, entre autres |
- | * 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, | + | * la **duplication** et la **suppression** des conteneurs ; |
- | * l' | + | * l’**accessibilité** |
+ | * la **migration** (à froid ou à chaud) de conteneurs. | ||
- | Cependant l’application ou le service qui sera configuré ne nécessite qu’une | + | Un conteneur Docker **se construit** à partir d’une |
- | Les pratiques courantes consistent également à créer de nouvelles VM par duplication d’une | + | Une image Docker est un **package léger, autonome |
+ | * **code** de l’application, | ||
+ | * **environnement d’exécution** (runtime), | ||
+ | * **outils système et librairies**, | ||
- | La technologie de conteneur mise en œuvre par Docker | + | De nombreuses images sont disponibles sur : |
- | * Permettre la **création** de service s’exécutant | + | |
- | * Partager | + | * de nombreux dépôts initiés par de **simples** utilisateurs. |
- | * Assurer une **isolation** forte entre les VMs. | + | Il est bien sûr possible de proposer des images, d’en modifier d’autres et de déposer la modification |
- | * **Limiter** la consommation de ressources | + | |
+ | |||
+ | ===== Comparaison de Docker avec une virtulisation classique ===== | ||
+ | Lien : https:// | ||
+ | |||
+ | ==== Utilisation d'un hyperviseur==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | | ||
+ | | ||
+ | * hyperviseur responsable de tous les échanges de données. | ||
+ | L' | ||
+ | |||
+ | L’application ou le service qui sera configuré ne nécessite qu’**une partie des fonctionnalités | ||
+ | |||
+ | 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 ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Les conteneurs Docker s’exécutent sur une machine hôte : | ||
+ | * partagent le noyau du système d’exploitation | ||
+ | * font directement appel à celui-ci pour exécuter | ||
+ | * très légers | ||
+ | * 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 | ||
Docker permet des usages qu’il était difficilement envisageable auparavant. | Docker permet des usages qu’il était difficilement envisageable auparavant. | ||
Ligne 35: | Ligne 70: | ||
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. | ||
L’approche de Docker consiste : | L’approche de Docker consiste : | ||
- | * à assurer l' | + | * à 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' | L' | ||
Ligne 52: | Ligne 88: | ||
Le **montage de volume** permet la **persistance des données** des conteneurs. | Le **montage de volume** permet la **persistance des données** des conteneurs. | ||
</ | </ | ||
+ | |||
+ | ===== 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, | ||
+ | * **attribution moins fine et stricte des ressources système et multiplication facile des conteneurs**, | ||
+ | * **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