Docker est une solution open source qui permet aux développeurs de coder plus facilement vers le cloud, d’ordinateur à ordinateur, via des « containers » de données avec un temps de transfert accéléré. L’application a été téléchargée plus de 400 000 fois, et de grandes enseignes et fournisseurs cloud ont déjà adopté la solution: RackSpace, le russe Yandex, OpenStack, le chinois Baidu, ebay, Spotify etc…
Le projet a plus de 11 000 stars sur Github et c’est l’un des projets open-source dont on parle le plus en ce moment.
Pourquoi faut-il s’y intéresser ?
Prenons un exemple concret. Aujourd’hui je travaille pour 2 clients. Pour le premier, je développe avec une base MySQL, du Java et un blog WordPress en PHP. Pour le deuxième, je fais du Scala avec Play2, une base Redis et une autre base MySQL. Lorsque je travaille sur ma machine de développeur, il faut donc que j’ai l’ensemble de ces environnements correctement installés. En plus, lorsque je ferai ma mise en production, il faut que ma cible de déploiement soit identique et à jour. Même version de MySQL et de PHP pour WordPress. Version 7 de Java pour le premier, et une autre version pour le deuxième…
Le souci ici c’est que la cohabitation de ces environnement est un problème sur ma machine de développement, qui ne doit pas impacter ma production. De plus, lorsque je livrerai, il faudrait que je package aussi et prépare l’installation de mes dépendances, avant même de livrer mon code. Et j’ai un scoop pour vous : la prod n’a plus à décider de votre environnement et des versions des logiciels utilisés. Vous allez voir qu’avec Docker, vous allez faire fermer le clapet du grand chef de la prod, qui par un beau matin pensait pouvoir décider de votre architecture, de vos logiciels et des applications à installer.
Le développeur doit être responsable de A à Z, capable de livrer et de packager l’ensemble de ses applications.
Docker, un github-like de conteneurs ?
Docker reprend aussi quelques idées de Github. Vous n’avez pas à démarrer de zéro lorsque vous souhaitez créer un conteneur. Vous pouvez très bien partir d’un conteneur déjà configuré, avec par exemple Apache et PHP, pour ajouter uniquement un WordPress. Pour cela, index.docker.io/ propose un annuaire de conteneurs Docker. Vous pouvez ainsi récupérer et installer un environnement complet avec Java + une base MySQL, ou un serveur Node avec un Mongo correctement configuré.
Si vous souhaitez ensuite modifier l’image d’un conteneur, sachez qu’il est possible de sauvegarder vos modifications… avec un docker push. Toute ressemblance avec git est fait exprès. Docker a repris l’idée de Git. Vous pouvez donc pusher, commiter et sauvegarder vos modifications… ou pas.
Lorsque vous utilisez une base de données, il sera cependant indispensable de monter un volume externe au sein de votre conteneur, afin de pouvoir conserver de manière persistence vos changements. Sinon, vous perdriez tout dès lors que le conteneur est arrêté.