2. Quel est le problème ?
• Beaucoup d’environements
• Beaucoup de dépendances
• Beaucoup de librairies
Solution: les machines virtuelles
• Une taille très grande
• Une perte dans les ressources
2
3. Objectif ?
Automatiser le déploiement d'environnements sous
forme légère, portables et auto-suffisants
3
8. « Docker est un outil qui
peut empaqueter une
application et ses dépendances
dans un conteneur virtuel ,
qui pourra être exécuter sur
n’importe quel serveur»
8
Avant de vous parler de Docker je vais vous raconter une histoire que tout développeur a vécu au moins une fois.
Il était une fois un jeune développeur qui codait tranquillement sur son ordinateur. Il était pressé car comme tout étudiant qui se respecte il devait présenter son travail le lendemain matin. Après des heures de travail, l'application était là, et elle fonctionnait à merveille ! Le lendemain, notre codeur arriva tout fier pour sa présentation, avec son projet sur une clé usb. Il le transfère sur l'ordinateur de son pote et là, ça ne fonctionne pas !
L'application de notre jeune développeur ne fonctionne pas sur l'ordinateur de son ami à cause d'un problème d'environnement. Entre deux systèmes, il peut y avoir des différences de version sur les dépendances ou encore des bibliothèques manquantes.
Ici, notre problème se limite à 2 systèmes, mais imaginez une équipe de 10 personnes avec des ordinateurs sous OS X, Linux ou même Windows, un serveur de test sous Ubuntu 12.04, et un serveur de production sous CentOS 7. S'assurer que leur application fonctionne bien sur tous ces environnements peut s'avérer être un vrai cauchemar !
Mais il existe des solutions et parmi l'une d'entre elles nous avons...
Actuellement nos application on besoin de plus en plus de technologie pour bien fonctionner si on prend un cas concret , on a une application php , cette application a besoin d’une version particulière de php imagemagic , une base de données particulière un system de cache particulier un sgbd particulier .. Au totale on se trouve avec une application qui nesssite des tonnes de dépendances
Ce qu’il faut savoir que la notion de conteneurs n’est pas une notion inventé par docker cette notion existe bien avant , linux a son propre system de conteneurs appelé LXC.
Un conteur c’est une boite qui est isolé du système d’exploitation , dans cette boite on peut mettre toute les dépendances qu’a besoin notre application pour fonctionner.
Et puisque cette boite est complétement isolé du système d’exploitation elle peut fonctionner sur n’importe quel système d’exploitation
Qu'est-ce que docker dans tout ça ? Docker permet de profiter de la technologie des conteneurs en profitant d'une API simple. Les commandes sont très simples à retenir et permettent de mettre en place un système de conteneur en place rapidement grâce à un hub collaboratif qui permet à tout le monde de partager des images qui pourront ensuite être utilisées comme base pour construire ces conteneurs.
Comme précisé précédemment Docker ne fonctionne pas sans le Kernel Linux donc si vous êtes sur Windows ou sur Mac vous pourrez quand même vous essayer à Docker grâce à Boot2Docker qui fournit une petite machine virtuelle prête à l'emploi directement équipée de Docker.
Le mot clé de cette définition est le mot conteneurs
Vous pouvez me dire ce que vous etres entrain de décrire mtn c’est un peu exactement la meme chose que les machines virtuelles , pour comprendre la différence entre les 2 je vous propose de voir ce schéma :
Ici on peut voir ce qu’on a actuellement avec les machines virtuelles alors on a l’infrastructure , l’os , et ensuite les machines qui vont fonctionner sur ce système c’est comme ci on est entrain de mettre un ordinateur dasn un autre .
Le probleme de cette structure si on a 10 machines virtuelle a avoir 11 système d’exploitation qui tourne sur le système et ça prend bcp de ressources .
Le système de conteneurs permet d’eliminer cette partie et d’utiliser directement l’os du host l’aventage ça sera d’aleger un peu la structure
Vous pouvez me dire ce que vous etes entrain de décrire mtn c’est un peu exactement la même chose que les machines virtuelles , pour comprendre la différence entre les 2 je vous propose de voir ce schéma :
Ici on peut voir ce qu’on a actuellement avec les machines virtuelles alors on a l’infrastructure , l’os , et ensuite les machines qui vont fonctionner sur ce système c’est comme ci on est entrain de mettre un ordinateur dasn un autre .
Le probleme de cette structure si on a 10 machines virtuelle a avoir 11 système d’exploitation qui tourne sur le système et ça prend bcp de ressources .
Le système de conteneurs permet d’eliminer cette partie et d’utiliser directement l’os du host l’aventage ça sera d’aleger un peu la structure
Le hub docker est un élément très important de l’écosystème Docker. Il est accessible à l’adresse http://hub.docker.com et permet le partage de conteneurs Docker prêt à l’emploi. Vous devriez donc y trouver de quoi répondre à vos besoin et, dans le cas contraire, il vous sera possible de proposer vos propres conteneurs.