« Docker - Conteneurisation » : différence entre les versions
| Ligne 43 : | Ligne 43 : | ||
== Introduction == | == Introduction == | ||
Comme expliqué dans la section sur la [[Mise_en_place_de_conteneurs#Légère|virtualisation légère]], Docker est '''une plateforme de conteneurisation''' qui permet '''d'exécuter un seul processus ou un ensemble de processus'''. Ainsi, si nous avons des composants tels que '''Nginx''' et '''MySQL''', nous devons créer '''deux conteneurs distincts''', un pour chaque composant. | Comme expliqué dans la section sur la [[Mise_en_place_de_conteneurs#Légère|virtualisation légère]], Docker est '''une plateforme de conteneurisation''' qui permet '''d'exécuter un seul processus ou un ensemble de processus'''. Ainsi, | ||
si nous avons des composants tels que '''Nginx''' et '''MySQL''', nous devons créer '''deux conteneurs distincts''', un pour chaque composant. | |||
=== Déploiement === | |||
Ce logiciel de conteneurisation résout efficacement la '''problématique''' complexe du '''déploiement''' de '''plateformes''' et de '''logiciels''', en garantissant un déploiement sans problèmes. | Ce logiciel de conteneurisation résout efficacement la '''problématique''' complexe du '''déploiement''' de '''plateformes''' et de '''logiciels''', en garantissant un déploiement sans problèmes. | ||
Version du 8 juillet 2023 à 12:17
Virtualisation
Il existe principalement deux types de virtualisation, la lourde et la légère. Il est important de comprendre la différence entre les deux afin de saisir comment Docker fonctionne réellement.
Lourde
Lorsque vous utilisez des machines virtuelles, vous effectuez une virtualisation lourde, ce qui signifie que vous créez un système autonome à l'intérieur du système hôte, lui attribuant ainsi ses propres ressources.
Donc, une isolation totale est réalisée, ce qui présente à la fois des contraintes et de nombreux avantages. En ce qui concerne les inconvénients, voici quelques exemples :
- Les machines virtuelles nécessitent un temps de démarrage plus long ;
- Étant donné que des ressources doivent être allouées aux machines virtuelles, elles réservent ces ressources sur le système hôte même si elles ne les utilisent pas entièrement.
Voici une liste d'avantages de faire de la virtualisation lourde :
- Les machines virtuelles sont totalement isolée du système d'hôte ;
- Les ressources attribués lui sont totalement reréservées ;
- La possibilité d'installer différents système d'exploitation.
Afin de résoudre les contraintes liées aux applications qui n'utilisent pas toutes les ressources mises à leur disposition, un nouveau système de virtualisation plus léger a été créé : les conteneurs.
Légère
Lorsque vous utilisez des conteneurs, vous optez pour une virtualisation légère, car ils ne virtualisent pas les ressources, mais se concentrent plutôt sur l'isolation des processus. Les conteneurs partagent donc les ressources avec le système hôte. Docker utilise donc ce système de virtualisation.
Un conteneur est un processus ou un ensemble de processus isolé du système. Ce concept existait déjà avant Docker avec des systèmes telles que OpenVZ ou LXC. Cependant, avec ces systèmes de virtualisation, partagent le même noyau Linux, ce qui signifie que les systèmes Windows ou BSD ne sont pas directement compatibles.
Voici les principaux avantages à utiliser des conteneurs pour les applications :
- Ressources : Comparativement aux machines virtuelles, les conteneurs ne verrouillent pas les ressources lors de l'allocation de la quantité de CPU, de RAM ou d'autres ressources. Par exemple, si l'on attribue 16 Go de RAM à un conteneur, mais qu'il n'en utilise que 2, les 14 Go restants ne seront pas bloqués.
- Démarrage : Étant donné que les conteneurs n'ont pas besoin de virtualiser les ressources, mais simplement de les isoler, leur démarrage est considérablement plus rapide.
- Autonomie : Les conteneurs peuvent être exécutés localement sur les machines des utilisateurs, ce qui leur offre une autonomie pour travailler sur différentes applications.
L'utilisation de ce système de conteneurs permet de réduire les coûts liés à l'infrastructure. De plus, sur des services en production, il est possible d'ajouter facilement des ressources pour répondre aux besoins sans rencontrer de problèmes.
Docker
Docker est une plateforme conçue pour exécuter des applications dans des conteneurs. Elle a été initialement développée pour répondre aux besoins d'une société spécialisée dans les Plateformes en tant que Service (PaaS). En 2013, Docker Inc. a été créée en tant que nouvelle entité et a rendu son produit open source.
Introduction
Comme expliqué dans la section sur la virtualisation légère, Docker est une plateforme de conteneurisation qui permet d'exécuter un seul processus ou un ensemble de processus. Ainsi, si nous avons des composants tels que Nginx et MySQL, nous devons créer deux conteneurs distincts, un pour chaque composant.
Déploiement
Ce logiciel de conteneurisation résout efficacement la problématique complexe du déploiement de plateformes et de logiciels, en garantissant un déploiement sans problèmes.
Par exemple, lors de la migration de wiki.support-vtx.ch (ancien wiki) vers wiki.stajic.me (wiki actuel), j'ai dû changer d'hébergement. Le problème était que j'ai dû effectuer toutes les opérations manuellement, ce qui m'a pris beaucoup de temps en raison d'erreurs de compatibilité et d'autres problèmes. En revanche, si mon wiki avait été dans un conteneur, j'aurais simplement eu besoin de déplacer l'ensemble du conteneur vers mon nouvel hébergement, sans rencontrer de problèmes.
Notions
Docker introduit également les concepts de stateless, stateful et d'immutabilité, qui sont fréquemment utilisés dans l'univers de Docker.
- Stateless et Stateful : Ce sont deux catégories de conteneurs. Les conteneurs stateful concernent les services tels que les bases de données MySQL, car ils conservent un état. Par exemple, si vous les éteignez puis les rallumez, vous les retrouverez dans le même état. En revanche, les conteneurs stateless sont l'inverse, c'est-à-dire qu'ils n'ont pas de mémoire persistante. Par exemple, avec les requêtes HTTP, vous devrez les refaire à chaque fois car le conteneur stateless ne conserve pas l'état entre les requêtes.
- Immutabilité : C'est un concept essentiel pour nos conteneurs, car ils ne doivent pas conserver de données internes. En effet, toute modification apportée à un conteneur serait perdue lors de son redémarrage, à moins que ces données ne soient persistantes. Pour conserver des données, il est donc nécessaire de créer un volume dans lequel ces données peuvent être stockées de manière durable.
Installation de Docker sur Linux
Nous allons installer la version Docker Community Edition et pour ce faire, il faudra dans un premier temps créer un compte sur Docker Hub


