URL: https://linuxfr.org/users/xion345/journaux/docker-la-plateforme-a-la-mode Title: Docker, la plateforme à la mode Authors: X345 Date: 2015年03月06日T19:40:56+01:00 License: CC By-SA Tags: docker et conteneur Score: 61 Très cher journal, Je profite du soleil rasant de cette fin de vendredi pour écrire un ~~troll~~ article hautement polémique sur Docker. Je présente d'avance mes excuses à la communauté pour ne pas avoir proposé ma contribution plus tôt dans la journée, mais j'ai été fort occupé ces derniers jours.  Alors voila, je suis dubitatif vis à vis de l'effet de mode généré par Docker. Peut-être pourrez-vous m'expliquer ce qu'il a de si génial. Parce que oui, j'en entends parler partout, tout le temps. Sur hacker news, dans les blogs que je suis, sur linuxfr et, plus surprenant, également au travail. On l'[essaye](https://linuxfr.org/news/docker-tutoriel-pour-manipuler-les-conteneurs), on fait des [dépêches](https://linuxfr.org/news/la-folie-docker) dessus, des [formations](https://linuxfr.org/news/conference-sur-docker-sur-lyon-le-16-mars-2015) sont lancées. Tout le monde veut Docker, c'est chaud, c'est hot, ça fait envie. Mais Docker, c'est quoi *exactement* ? commencerez-vous par demander. On vous répondra immédiatement que Docker repose sur les conteneurs LXC, une forme de virtualisation légère où on n'émule pas de hardware et où on ne fait tourner qu'un seul noyau, et que vraiment vous ne suivez rien à rien. C'est comme une VM, mais en *mieux*, t'es nul ou quoi ? Sauf que non. La philosophie derrière Docker, c'est de lancer un process (et un seul) par conteneur. Et en foreground parce que le conteneur s'arrête si le process lancé s'arrête. Et traiter les conteneurs comme des VM « [fat containers](http://www.reddit.com/r/docker/comments/2t1mdh/baseimagedocker_fat_containers_and_treating/) » vous vaudra l'ire de la communauté Docker. Vous aurez à vous [justifier](https://blog.phusion.nl/2015/01/20/baseimage-docker-fat-containers-treating-containers-vms/) longuement si jamais vous le faites. Et c'est là que le bât blesse. Rien que lancer un serveur web et un serveur d'application web (par exemple nginx et uWSGI pour django) nécessite de bidouiller avec [supervisor](http://supervisord.org/). Impossible également de vous connecter en SSH dans votre conteneur pour voir ce qu'il s'y passe, y'a pas de serveur SSH dedans. Même chose, oubliez le logging, syslog n'y tourne pas non plus. Pas plus qu'il n'y a un init dans votre conteneur. Bon soit. J'utilise sûrement juste mal Docker. Mais enfin, pour un truc censé simplifier le déploiement d'applications, si je dois créer 3 ou 4 conteneurs juste pour lancer une pauvre application web avec une base de données, j'ai un peu l'impression que ça va à l'encontre du but affiché. La page sur la [configuration réseau](https://docs.docker.com/articles/networking/) des conteneurs Docker commence par un TL;DR, ça en dit long. Quelques voix s'élèvent pour critiquer Docker, et je ne peux que vous inviter chaudement à lire les deux billets (en Anglais) listés ci-dessous : * [Is Docker ready for production? Feedbacks of a 2 weeks hands on](https://t37.net/is-docker-ready-for-production-feedbacks-of-a-2-weeks-hands-on.html) * [Lets review.. Docker (again) ](http://iops.io/blog/docker-hype/) Et leur liste des griefs est longue. Le système de cache de Docker ne comprends pas que `apt-get update; apt-get full-upgrade` n'est pas idempotent et gardera en cache une image avec une ancienne liste de paquets sans la mettre à jour. Super pour intégrer facilement des mises à jour de sécurité. Le système de construction via les Dockerfile est aussi trop rudimentaire pour gérer facilement des déploiements d'applications et la lenteur des builds et gênante. Alors finalement, en pratique, quel problème résout Docker ? Est-ce que ses multiples défauts n'en font pas une couche de complexité inutile ? Vous pouvez moinsser.