Outils pour utilisateurs

Outils du site


docker

Cloud : pourquoi Docker peut tout changer

Docker vient bousculer le modèle, jusqu'ici fermé, des grands clouds. Il pourrait permettre en effet de basculer une application entre les clouds d'Amazon, Google et Microsoft. [Mise à jour le 21/07/2015]

Antoine Crochet-Damais (JDN)

Comment résumer ce qu'est Docker ?

Docker permet d'embarquer une application dans un container virtuel qui pourra s'exécuter sur n'importe quel serveur (Linux et bientôt Windows). C'est une technologie qui a pour but de faciliter les déploiements d'une application, et la gestion du dimensionnement de l'infrastructure sous-jacente. Cette solution est proposée en open source (sous licence Apache 2.0) par une société américaine, également appelée Docker, qui a été lancée par le Français Solomon Hykes.

Quelle différence avec la virtualisation ?

La virtualisation permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et les exécuter sur un serveur machine. Cette machine physique intègre elle-même un OS sur lequel ses applications sont exécutées. Ce n'est pas le cas du container. Le container fait en effet directement appel à l'OS de la machine hôte pour réaliser ses appels système. Historiquement, Docker repose sur le format de containers Linux, alias LXC. Il l'étend par le biais d'une API dans l'optique d'exécuter les applications dans des containers standards portables d'un serveur Linux à l'autre.

Quelles sont les limites de la technologie Docker ?

Initialement limité à Linux, Docker va être porté sur Windows d'ici le lancement de la prochaine version majeur du serveur de Microsoft, prévu pour 2015. Cette annonce fait suite à un partenariat signé par Docker avec l'éditeur de Redmond. Il n'en reste pas moins que les containers créés sur Linux, ne pourront être portables sur Windows, et réciproquement. Il s'agit là de la limite majeure de Docker, et sa principale différence avec la virtualisation. Une machine virtuelle embarquant Linux peut en effet tourner sur un serveur Windows, et inversement.

A quelle version de Docker en est-on aujourd'hui ?

Après une version 1.4 centrée sur la correction de bugs, Docker 1.5 est sorti en février 2015 (avec le support du protocole IPv6, et une nouvelle API pour mesurer la performance du container). En avril, c'était autour de Docker 1.6 d'être lancé. Il introduit une préversion d'un client Docker pour Windows, un moteur de logs, un dispositif de méta données attaché aux containers, ainsi qu'un identificateurs d'images pour gérer les mises à jour (lire le post sur le blog de Docker). En Juin 2015, Docker 1.7 arrivait dans les bacs avec une nouvelle version de Swarm.

Quid de Docker en matière de sécurité ?

Docker a été très critiqué sur ce plan. LXC [Linux Containers NDLR] sur lequel Docker repose historiquement est en retard sur cet aspect. Il ne permet pas d'isoler les ressources utilisées par des containers basés sur la même machine, si bien qu'un container peut très bien cannibaliser la ressource et déstabiliser ses voisins… A cette question, Docker répond que LXC, dans ses dernières versions, s'améliore en termes de gestion de la performance. Face à cette problématique, Docker a aussi signé un partenariat avec Parallels qui introduit la prise en charge des containers Docker dans OpenVZ. Une technologie de virtualisation qui demeure une référence en matière de sécurité et d'isolation. La dernière version de Docker introduit aussi la possibilité d'appliquer une limite de consommation de ressource pour l'ensemble des containers d'une même machine (avec ulimit).

Enfin en lien avec Docker, le CIS (Center for Internet Security) a publié en mai 2015 un document très détaillé sur la manière de paramétrer un container Docker pour le sécuriser.

Pour l'heure, les containers Docker se créent et se manipulent en lignes de commande. Docker planche-t-il sur un interface de gestion graphique des containers ?

La réponse est oui. C'est l'objet du rachat de Kitematic en mars 2015. Cette société apporte à Docker une solution graphique de gestion de containers. Pour l'instant, elle se limite à un client Mac, mais il est fort à parier que Docker annonce dans les mois qui viennent des déclinaisons de cette offre pour postes Windows et Linux. Cette nouvelle brique pourrait se révéler assez stratégique pour Docker. A la manière de PHPMyAdmin et WampServer en leur temps pour la pile LAMP, elle pourrait permettre en effet de démocratiser sa technologie.

Par où commencer un projet de déploiement de Docker ?

La communauté des utilisateurs de Docker commence à être importante, même si sa taille reste difficile à évaluer. Il existe donc une documentation fournie portant sur cette technologie open source sur le web. Rien que sur StackOverFlow, plusieurs milliers de pages lui sont déjà consacrées.

La société Docker met part ailleurs à la disposition des utilisateurs un service, baptisé le Docker Hub, conçu permettre l'échange et le build de containers Docker pré paramétrés (et gratuits). Ce partage peut être éventuellement restreint à une équipe de développeurs, moyennant la souscription à un service premium. Hébergeant déjà 40 000 containers (avec Ubuntu, WordPress, MySQL, NodeJS…), cet espace est aussi intégré à GitHub depuis lequel il sera possible d'incrémenter des mises à jour de containers présents sur le Docker Hub.

Quels sont donc les principaux avantages de Docker comparé à la virtualisation ?

Comme le container n'embarque pas d'OS supplémentaire, à la différence de la machine virtuelle, il est par conséquent beaucoup plus léger que cette dernière. Il n'a pas besoin en effet d'activer un second système pour exécuter ses applications. Cela se traduit par un lancement beaucoup plus rapide, mais aussi par la capacité à migrer beaucoup plus facilement un container d'une machine physique à l'autre, du fait de son plus faible poids. “Typiquement, une machine virtuelle pourra peser plusieurs Go, alors qu'un container nu représentera, lui, quelques Mo”, estime-t-on chez Docker.

Quels sont les grands scénarios dans lesquels Docker apporte une valeur ajoutée aux développeurs ?

D'abord, Docker peut apporter une plus-value en accélérant les déploiements. Pourquoi ? Parce que les containers Docker sont légers. Les basculer d'un environnement de développement ou de test à un environnement de production peut donc se faire presque en un clic, ce qui n'est pas le cas pour la VM, plus lourde. Certains acteurs du cloud ayant implémenté les containers, comme le français Commerce Guys (avec Platform qui est hébergé sur AWS), mettent en avant cet argument. Du fait de la disparition de l'OS intermédiaire des VM, les développeurs bénéficieront aussi mécaniquement d'une pile applicative plus proche de celle de l'environnement de production.

Docker pourra permettre dans le même temps de concevoir une architecture de test plus agile, chaque container de test pouvant intégrer une brique de l'application (base de données, langages, composants…). “Pour tester une nouvelle version d'une brique, il suffira d'inter changer le container correspondant”, explique Hervé Leclerc, directeur technique de la société de services française Alter Way - qui a basculé l'ensemble de sa R&D sous Docker dès 2014. Côté déploiement continu, Docker présente par ailleurs un intérêt car il permet de limiter les mises à jour à une partie du système containérisé. “Notre technologie, grâce à son dispositif de Build associé, fait la différence entre deux états de système de fichiers, et ne met à jour que cette différence”, précise-t-on chez Docker.

Pour faciliter la montée en charge d'une telle architecture de containers en cluster, Docker a livré la technologie Swarn début 2014. L'éditeur a aussi lancé un chantier visant à ouvrir Docker aux appliances réseau - qui pourront être utilisées pour orchestrer les flux dans des clusters de containers. En attendant, certains éditeurs tiers ont commencé à construire des solutions de gestion de containers Docker en cluster, qui se veulent plus abouties que Swarn. C'est le cas notamment de ClusterHQ avec une solution de gestion d'architecture applicative en containers massivement distribuée - qui offre des fonctions de gestion à la volée et à chaud des containers.

Mais en matière de production, la promesse de Docker va encore plus loin. Car les containers Docker étant portables d'une infrastructure à l'autre, il devient possible d'imaginer de réaliser du mirroring d'application et de l'équilibrage de charge entre clouds, et pourquoi pas des plans de reprise ou continuité d'activité entre clouds, voire même décider de la reprise d'un projet par un autres fournisseurs clouds.

Existe-t-il des benchmark entre Docker et les technologies de virtualisation classiques, et quels sont leurs enseignements ?

Oui. IBM notamment a réalisé un comparatif de performance entre Docker et KVM. Sa conclusion est sans appel : Docker égale ou excède les performances de cette technologie de virtualisation open source - et ce dans tous les cas testés dans le cadre du comparatif. Pour Big Blue, la performance des containers Docker se rapproche même de celle des serveurs machines nus.

En éliminant la couche de virtualisation, consommatrice en ressources machines, Docker permettrait même de réduire la consommation de RAM de 4 à 30 fois. Ce qui contribuait à optimiser l'utilisation des serveurs, et par conséquent la consommation d'énergie - qui reste l'un des principaux postes de dépense des data centers.

Tester Docker !

Petite vidéo sympa de présentation du produit Docker

docker.txt · Dernière modification: 2020/06/08 11:10 (modification externe)