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:54] – 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 |
- | La virtualisation classique permet, via un hyperviseur, | + | |
- | L’hyperviseur | + | |
- | <WRAP center round info> | + | |
- | La virtualisation complète, la création d’une VM nécessite : | + | |
- | | + | |
- | * l' | + | |
- | Cependant | + | Un conteneur est : |
- | </ | + | * 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.). | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Docker offre des outils pour utilise ces fonctionnalités de manière simplifiée pour permettre, entre autres : | ||
+ | * 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. | ||
+ | |||
+ | Un conteneur Docker **se construit** à partir d’une **image**. | ||
+ | |||
+ | 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 : | ||
+ | * **code** de l’application, | ||
+ | * **environnement d’exécution** (runtime), | ||
+ | * **outils système et librairies**, | ||
+ | |||
+ | De nombreuses images sont disponibles sur : | ||
+ | * le **registre officiel** (appelé hub): https:// | ||
+ | * 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:// | ||
+ | |||
+ | ==== Utilisation d'un hyperviseur==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | * 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' | ||
+ | |||
+ | 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. | ||
- | ===== La virtualisation avec Docker===== | + | Le démarrage |
- | {{ : | + | |
- | Les conteneurs Docker s' | + | |
- | Du fait que les conteneurs n' | + | |
- | Par ailleurs, la technologie mise en œuvre isole les applications les unes des autres et de l' | + | |
- | ===== A chaque service une VM dédiée | + | ==== Utilisation de Docker |
- | 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. | + | |
- | Mais cela représente une consommation importante de ressources disque et de calcul pour implémenter l’application ou le service. | + | {{ : |
- | ===== Docker | + | Les conteneurs |
- | La technologie de conteneur mise en œuvre par Docker | + | * partagent le noyau du système d’exploitation |
- | * Permettre la **création** de service s’exécutant sur un **système d’exploitation | + | |
- | * Partager une grande partie des **fonctionnalités** et des librairies | + | * très légers : n’embarquent pas de système d’exploitation |
- | * Assurer | + | * réduit l’utilisation du disque, |
- | * **Limiter** | + | * migrent plus facilement d’une machine physique à une autre |
+ | | ||
+ | Par ailleurs, | ||
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' | + | * à 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 61: | Ligne 91: | ||
===== Les limites des conteneurs Docker ===== | ===== Les limites des conteneurs Docker ===== | ||
- | Les conteneurs Docker | + | Les conteneurs Docker |
* **isolement relatif avec le système d’exploitation hôte**, les conteneurs peuvent être plus vulnérables, | * **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**, | * **attribution moins fine et stricte des ressources système et multiplication facile des conteneurs**, |
reseau/docker/presentationdocker.1701032052.txt.gz · Dernière modification : 2023/11/26 21:54 de techer.charles_educ-valadon-limoges.fr