Ne ratez pas la révolution Docker !

On ne va pas parler de la prochaine grève dans le port de Marseille mais du projet Docker, qui vise à proposer un nouveau standard de livraison et de déploiement pour les applications.

Note de la rédaction : Cet article n’est pas écrit par un expert Cobol , C++, JAVA/JEE avec 10 ans d’expérience en design d’applications, je prends donc quelques libertés et fais quelques raccourcis et espère parler au plus grand nombre comme cela 😉

Docker c’est quoi ?

logo docker avec la baleine

Tout d’abord on peut dire cocorico car Docker est un projet créé par un français, ingénieur Epitech, Solomon Hykes (info : http://www.epitech.eu/solomon-hykes-dotcloud-docker.aspx). Maintenant la société est dans la Silicon Valley et a levé 15 millions de dollars début 2014. La sortie public du projet date de début 2013 avec un premier commit sur GitHub le 19 Janvier.

Docker veut proposer un nouveau système pour délivrer des applications et automatiser les déploiements en créant des containers. Le container ou conteneur c’est quoi ? L’image que l’on peut en avoir est que Docker permet de créer des VM Logiciels auto suffisante. Quand on crée des machines virtuelles (VM) actuellement on définit la puissance, la mémoire vide, l’espace disque etc… et ensuite on se retrouve avec un PC virtuel sur lequel on installe ce que l’on souhaite.

Docker propose lui de créer des containers contenant tout ce qui permet de faire fonctionner son application peut importe la machine sur laquelle tourne le container.

Docker comment ça marche ?

Pour créer votre container vous partez d’une base Linux (le noyau grosso modo) que vous allez enrichir avec les services, librairies, applications qui vous seront nécessaires. Ensuite vous allez pouvoir générer votre image/container et le déployer dans un environnement Docker sans vous poser la question sur quelle machine il est installé. L’application fonctionnera à l’intérieur du container (elle peut communiquer avec l’extérieur bien entendu) et n’aura pas besoin des ressources logiciels de la machine hôte pour fonctionner.

vue de l'organisation dockerPrenons un exemple simple, ce blog, pour le dockeriser (je ne sais pas si ça existe comme mot !), on part donc d’une base Linux sur laquelle on démarre le serveur web et la base de données. On configure php comme il faut, on ajoute le code wordpress et on effectue le paramétrage de notre blog. Ce sera tout cet ensemble que l’on mettra dans un container et que l’on pourra déployer où l’on veut.

C’est très pratique car avec mon container, je n’ai pas besoin de savoir si sur le serveur, qui va faire tourner mon blog, j’ai bien php 5.11.375 version 12 d’installé avec la bonne librairie car tout est déjà dans mon container. Une fois qu’on a compris ce premier exemple, on se dit que c’est pas mal comme idée mais si il faut embarquer à chaque fois tout ce qui existe dans un container ça va devenir un peu lourd à gérer.

En fait ce qu’il faut savoir c’est que dans un container, on n’est pas obligé de tout embarquer et en plus tout n’est pas en fonctionnement. Par exemple je pourrai ne faire tourner dans un container que le service SMTP.

La société Docker a aussi travaillé pour faire communiquer les containers. Si on reprend l’exemple du blog, on pourrait faire un container base de données et un container serveur web + wordpress. Comme cela je peux réutiliser mon container base de données avec un autre container, pour par exemple faire un deuxième site qui utiliserait la même base de données. Au final je n’aurai à gérer qu’une base de données.

C’est pour cela que j’ai pris l’image d’une machine virtuelle logiciel auto suffisante, car on voit bien que l’on peut reproduire le fonctionnement que l’on a actuellement avec les VM mais que l’on n’a pas à se soucier du hardware et des versions d’OS.

Qu’est ce que cela change

Sur le papier:

  • Ce système est censé éviter tous les ratés du style, mince ce n’est pas la bonne version du service ou les déconvenues quand on découvre que notre hébergeur n’autorise pas tel service car cela est contraire à sa politique d’utilisation.
  • Pour les développeurs, si l’application est pleinement fonctionnelle sur l’environnement de développement, elle sera pleinement fonctionnelle sur le serveur de production car le container sera identique.
  • Pour les clients qui achètent ou font développer des applications, cela est une garantie de pouvoir changer d’hébergeur très facilement. Quand vous partez, vous prenez le container et vous êtes sur que vous n’oubliez pas un paramètre caché ou une virgule qui vont altérer le fonctionnement de l’application, chez le nouvel hébergeur.
  • Intégrer un nouveau développeur ou transférer une application à une nouvelle société sera aussi très simple car dans le container il y a tout.

Au niveau performance ça donne quoi ?

Cette vidéo, d’un ingénieur IBM à la DockerCon 14, présente les résultats d’un comparatif Machine Virtuelle KVM vs. Docker. Si vous regardez la vidéo, vous verrez qu’il y a quelques bémol sur les tests et qu’il faudrait être plus précis mais les gains en performance annoncés par Docker sont vraiment important. Même si tout n’est pas juste ça ne va pas changer du tout au tout.

consommation mémoire docker contre machine viruelle
Dans ce test on voit la consommation mémoire après l’ouverture de 15 machines virtuelles sur Docker et KVM.

Sur cet article, il es montré qu’en terme de performance d’écriture Docker est quasi aussi proche que du natif et que l’utilisation d’une machine virtuelle est 40 à 50% moins bon.

performance docler par rapoort à kvm machine virtuelle

Pourquoi les DSI doivent s’intéresser à Docker ?

Si vous avez regardé la vidéo ci-dessus, vous avez vu que Docker devrait permettre de faire aussi bien voir mieux en consommant moins de ressources ou d’espace disque. Donc si vous passez sur Docker à parc serveur identique, vous devriez pouvoir gagner en performance ou pouvoir augmenter le nombre d’applications sans acheter plus de serveurs.

Au niveau service cela changera la manière dont vous gérerez la relation avec vos prestataires. Quand votre prestataire vous livrera un container, il ne pourra pas dire que vous l’avez mal installé sur votre serveur, car il vous aura livré un tout. A charge pour lui de faire le nécessaire pour que ça marche. Pour l’entreprise cela impliquera que si vous validez un PV de recette pour un container, vous ne pourrez pas dire que ça n’a pas été testé dans les bonnes conditions car tout est dans le container.

Tout n’est pas encore en place car le projet est jeune mais docker doit permettre de mieux gérer le cycle d’évolution des applications et permettre une mise en production plus simple. Prenons l’exemple de la faille HearthBleed. Quand vous mettiez à jour SSL sur un serveur, il fallait attendre que toutes les applications soient mises à jour ou testées avant de passer le patch au risque d’avoir des applications en erreur. Avec Docker vous mettez à jour vos containers et vous les mettez en production au fur et à mesure, pas la peine d’attendre que tout soit prêt. Comme chaque container embarque ce dont il a besoin, si la faille hearthbleed est corrigée pour un container, on peut le mettre en production sans risquer de perturber les autres.

La révolution Docker est ce que l’on n’y va pas un peu fort ?

logo docker large

Je ne lis pas dans les boules de cristal mais de ce que je vois, il y a un fort engouement pour cette technologie et les bénéfices vraiment intéressant et concret. Le projet est poussé par des grandes entreprises, Google en tête.

Sur GitHub le projet Docker est en 28ème position des projets les plus populaires avec 14 655 étoiles. Sachant que le premier est BootStrap avec plus de 71 000 étoiles et qu’un projet comme jQuery est 3ème à plus de 31 500 étoiles.

VMware a bien sentit le potentiel, et le danger pour son outil de virtualisation ? Il ont donc annoncé un partenariat avec Docker cet été, lien.

Docker est déjà utilisé par des sociétés comme ebay ou spotify. Le projet est jeune mais ces sociétés font des tests sur des modules en production. Vu le trafic et les enjeux qu’il y a derrière, on imagine bien que si ça avait été une lubie d’un développeur ce serait resté à l’état de test.

Pourquoi cela est important pour les partenaires Google ?

Google utilise cette technologie pour tous ses services et lance chaque semaine plus de 2 milliards de conteneurs/containers (source).

Docker est déjà proposé sur Compute Engine (lien) et Google travaille sur l’intégration de la technologie des containers pour son environnement App Engine (lien).

En tant que partenaire Google Apps, si vous ne voulez pas passer à coté de quelque chose il est temps de s’y mettre. Si vous ne me croyez pas, même Techcrunch le dit que Google mise beaucoup sur ce projet (lien).

Pour aller plus loin sur Docker

en savoir plus

Si vous avez lu cet article en entier et que vous trouvez Docker passionnant, voici quelques liens qui vous permettront d’en savoir plus.

Tout d’abord le site officiel : docker.com

Sur la page de découverte du projet docker (lien), il y a une vidéo de 7 minutes qui est une version raccourci de cette vidéo qui me semble mieux, car illustrée avec des exemples pour une meilleure compréhension. C’est un peu technique mais plus parlant.

Vous pouvez aussi regarder cette vidéo ou on aborde d’autres concepts lien avec une présentation générale aussi au début.

Une fois que vous avez vu ces vidéos, je vous recommande de regarder la vidéo de benchmark KVM vs. Docker (lien). Comme dit avant, ça pourrait être plus précis mais cela reste instructif.

Sur le site de Docker vous avez un émulateur, pour tester Docker comme pour de vrai. C’est sympa et rapide à faire donc rendez vous ici.

Après tout ces documents en anglais un peu de français. Sur developpez.com il y a un tutorial en deux parties :

  • La première est une présentation, elle ne vous apprendra pas grand chose de plus si vous avez regardé les vidéos (lien)
  • La seconde est mieux, c’est un exemple concret sur comment créer des environnements (lien). Un peu technique mais intéressant.

Pour finir il y a cette vidéo en français, vraiment très bien et à regarder. C’est technique mais avec beaucoup d’informations, des exemples et surtout qu’est ce que l’on peut attendre de Docker et ses prochaines évolutions (lien). On peut facilement naviguer dans les parties donc n’hésitez pas à avancer.

 

Docker est un projet jeune mais prometteur et poussé par de grosses sociétés comme Google donc vous allez en entendre parler !!!

A propos de Stéphane 81 Articles
Consultant depuis 10 ans et passionné de Google. Pur autodidacte, Google Top Contributeur sur les forums Google drive et Adsense. Spécialiste Google Apps et certifié Google Apps Deployment Specialist.

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*