Dans cet article, nous aborderons les points suivants :
- Qu’est ce qu’un conteneur ?
- Qu’est ce que Docker ?
- Quels sont les avantages de Docker ?
- Qui utilise Docker ?
1. Qu’est ce qu’un conteneur ?
Docker utilise des conteneurs afin de fonctionner. C’est pourquoi il est primordiale de comprendre ce que sont les conteneurs (contenairs en anglais).
Un conteneur est le regroupement d’un logiciel et toutes ses dépendances (librairies, code source, fichiers de configuration…) empaquetés au même endroit. Ce qui permet d’assurer le fonctionnement stable et véloce de l’application quelque soit les environnements d’exécutions dans lesquels elle est lancée.
Les conteneurs sont des machines virtuelles améliorées, en effet à la différence d’une machine virtuelle classique, un conteneur virtualise un système d’exploitation et réutilise le noyau de l’OS de la machine hôte. Ce qui permet une gestion des ressources optimisée.
Alors qu’une machine virtuelle classique virtualise une machine physique (le hardware) au travers de l’hyperviseur. Ce qui explique que lorsqu’on crée une machine virtuelle classique, on doit configurer la taille du disque dur, la puissance du processeur et la mémoire vive disponible.
Partant de ces explications et afin d’optimiser les performances en production, il devient évident qu’il est préférable d’utiliser un système d’exploition ayant un noyau Linux si on souhaite lancer des applications sous Linux.
En revanche, en phase de développement avoir une machine Windows n’est plus problématique puisque les conteneurs sont indépendant de l’hôte.
2. Qu’est-ce que Docker ?
Docker est une technologie de virtualisation qui permet de créer, déployer et démarrer des applications facilement en utilisant des conteneurs de logiciels ou services.
En effet une application a besoin de multiples logiciels pour fonctionner et chacun de ces logiciels dépendent de l’environnement de la machine sur laquelle ils sont installés.
Les conteneurs permettent aux développeurs de réunir une application et toutes ses dépendances dans un seul package. Pour ce faire, chaque conteneur peut contenir plusieurs conteneurs. Enfin les services fournis par chaque conteneurs sont accessibles via le réseau.
Docker a l’avantage de permettre la configuration d’un système d’exploitation différent et des versions de logiciels différentes pour chaque conteneur. Ainsi il est possible d’installer deux logiciels à la base incompatibles sur la même machine ou même de faire fonctionner deux versions différentes du même logiciel en même temps sans avoir à gérer les problèmes de dépendances.
3. Quels sont les 6 principaux avantages de Docker ?
- FlexibleToute application peut être transformée en conteneur
- LégerContrairement à la virtualisation classique, Docker exploite et partage le kernel du système d’exploitation de l’hôte, ce qui le rend très efficace en terme d’utilisation des ressources du système
- PortableIl est possible de créer, déployer et démarrer des conteneurs sur son ordinateur, celui de ses clients ou un serveur distant
- Auto-suffisantL’installation et la désinstallation de conteneurs ne dépend pas des autres conteneurs installés. Ce qui permet de mettre à jour ou remplacer un conteneur sans modifier les autres
- ScalableDupliquer un container est extrêmement simple, ce qui permet de réaliser de la scalabilité horizontale aisément
- SécuriséPar défaut, Docker crée des conteneurs en appliquant des règles de sécurité strictes et isole les processus
4. Pour qui Docker est bénéfique ?
Pour les développeurs
En utilisant Docker les développeurs sont donc sûrs que leur application fonctionnera indépendamment du système d’exploitation et de l’environnement auquel il sont soumis.
Ainsi ils peuvent se concentrer sur la production de code plutôt que de passer du temps à penser au système sur lequel l’application fonctionnera.
Pour les administrateurs systèmes
Docker permet d’installer et de démarrer des conteneurs qui fonctionnent ensembles.
Combiné avec docker-compose il est possible de déployer toute une application et ses dépendances avec une seule commande.
Enfin les installations de mises à jours peuvent être simplifiées par une configuration facile à implémenter.