Tout le monde parle du Docker, alors on est obligé de suivre un peu la « mode ». Du cous nous allons commencer une série d’article sur Docker.
Docker est un produit développé par la société du même nom, le projet a été développé en Mars 2013. Depuis cette date, Docker est devenu le Soft à la mode.
Docker permet de créer des environnements (appelés containers applicatifs) de manière à isoler des applications. A l’image de son logo, Docker est donc un porte-conteneurs applicatifs. Un conteneur applicatif peut intégrer tout type d’application fonctionnant sous Linux : tout ce qui s’installe sur système Linux peut être isolé dans un conteneur Docker.
Docker repose sur 3 composants :
- Le kernel Linux
- La fonctionnalité qu’on appelle les containers, l’idées est de lancer du code ou exécuter une tâche dans un environnement isolé
- cgroups qui va avoir pour objectif de gérer les ressources
Docker n’est pas un système de virtualisation, mais un système d’isolation applicative
Docker vs VMs
Une VM isole tout un système et dispose de ses propres ressources- Docker, le kernel va partager les ressources du système hôte et interagir avec les containers
Lancer un environnement et isoler les composants de ce container avec les composants de hôte, ce que Docker sait faire
1.Exemple d’utilisation
Imaginez que vous vouliez mettre en place un environnement de développement Web. Ce dernier se compose des éléments suivants :
- Un serveur web (Nginx)
- Un serveur de base de données (Mysql)
- Un serveur PhpMyAdmin, permettant d’administrer le contenu de la base de données
Dans un contexte classique, vous installeriez ces trois éléments sur un système Linux classique.
Avec Docker, l’approche est différente : vous allez créer un conteneur d’application par élément de votre environnement
- Chaque conteneur sera totalement indépendant des autres et il sera possible de faire cohabiter des systèmes théoriquement incompatibles. Le serveur de base de données peut, par exemple fonctionner sur une base Debian, le serveur Web sur RedHat. Le serveur et PhpMyAdmin sur Apache
- Enfin, chaque conteneur pourra évoluer indépendamment des autres, sans se soucier des éventuels effet de bord sur les autres, puisqu’ils sont isolés.
2.Exemple d’utilisation
Une entreprise souhaite développer un projet Symfony, leur équipe est composée de deux développeurs:
- Ali est un vieux de la vieille, il utilise Debian 7. De plus il est ISO avec les serveurs de production
- Omar dispose de la dernière distribution, il dispose PHP la dernière version. Cependant, il peut générer du code que ne peut pas s’exécuter correctement avec une version plus vieille. comme celle d’Ali
- Souvent ça pose problème que de deux développeurs ne travaillent pas sur les mêmes environnements, du coup grâce à Docker, on peut faire en sorte que Ali et Omar travaillent sur les mêmes versions Linux sans craindre des problèmes de compatibilité entre leurs codes sources.
- Le plus simple est de mettre en place un Dockerfile, document chef d’orchestre qui permettra à Ali et Omar de monter une image similaire, ce Dockerfile sera calqué sur les éléments présents en production. De ce fait Ali et Omar en plus de travailler sur un environnement identique, seront sur un environnement similaire à celui de la production
Grâce à Docker, multipliez les environnements sur votre machine, sans limiter les performances de votre ordinateur. Les ressources sont partagées avec la machine hôte !. chaque environnement peut être configuré grâce à son Dockerfile; présent à sa racine.
Voila les grandes lignes et pour développer plus