TECH NEWS

Docker, vers un déploiement efficace des développements

La mouvance DevOps, digne héritière des méthodologies Agiles, consiste à réconcilier les principaux acteurs de l’IT autour de problématiques communes. L’idée est d’optimiser les flux de création, de maintenance et de mise en production de développements applicatifs.

July 1, 2015

La mouvance DevOps, digne héritière des méthodologies Agiles, consiste à réconcilier les principaux acteurs de l’IT autour de problématiques communes. L’idée est d’optimiser les flux de création, de maintenance et de mise en production de développements applicatifs.

Docker se positionne parfaitement dans cette optique en tant qu’outil léger et efficace permettant d’isoler les applications et leurs données des environnements d’exécution. Qu’il s’agisse de déployer des applicatifs en interne, sur une machine de développement, sur un serveur de production ou dans le Cloud, Docker offre une solution unifiée et aisément transposable, tout en restant accessible dans sa mise en œuvre tant aux développeurs qu’aux administrateurs système.

Analyse par Jean-Pol Landrain – Software Architect chez Agile Partner

Fiche d'identité

Docker en bref

Untitled0L’idée d’isoler les applications afin de les rendre indépendantes de l’environnement d’exécution n’est pas nouvelle. En effet, des solutions de virtualisation et leurs outils de supervision existent depuis longtemps chez IBM avec PowerVM, ou plus récemment avec Hyper-v chez Microsoft, ou encore chez le spécialiste VMware.

 

 

 

 

UntitledLa particularité de Docker, par rapport aux autres outils, réside dans son fonctionnement. En effet, il s’agit d’une technologie similaire à celle offerte par Oracle avec les Zones Solaris, à ceci près qu’elle est adaptée aux environnements de type Linux. Alors qu’avec les machines virtuelles habituelles, le système hôte émule le fonctionnement d’une machine complète, sur laquelle est installé un système d’exploitation cible. Docker, lui, offre plus modestement un environnement isolé (appelé container) fonctionnant à l’intérieur du système hôte, directement sur le noyau Linux. Cette approche apporte un gain substantiel, notamment, grâce à la légèreté en ressources matérielles et se traduit par des performances de tout premier ordre sur une machine moderne. En effet, il est rare d’attendre plus d’une seconde pour démarrer un container; là où une machine virtuelle nécessitera quelque dizaines de secondes. Cette solution offre également d’autres avantages tels que par exemple une diversité de choix de plateformes cibles disponibles en ce qui concerne les moutures Linux ou une meilleure allocation dynamique et un meilleur partage de ressources permettant de démarrer plusieurs dizaines de containers en parallèle sur une simple machine de bureau. A noter, malgré tout, que la solution ne peut utiliser que des containers compatibles avec le noyau de l’hôte.

Pour isoler le container et l’hôte ou encore les différents containers entre eux, Docker s’appuie sur les mécanismes fournis par le noyau Linux via le dispositif « LXC » offrant des fonctionnalités de virtualisation légère. LXC permet de compartimenter les ressources du système hôte (CPU, réseau, mémoire, systèmes de fichiers, …) et de les organiser en espaces de nommage distincts afin de les allouer aux containers. Par exemple, un processus ayant un identifiant unique dans un container ne sera pas confondu avec un processus de même identifiant dans le système hôte ou dans un autre container. Il en va de même pour l’ensemble du système, y compris les fichiers et les périphériques.

Docker supporte également des mécanismes de communication inter-containers. Si un container veut accéder à un périphérique de l’hôte, par exemple une webcam, on pourra mapper ce périphérique dans le container. De plus, il est aussi possible de partager des zones de mémoire, des interfaces réseau ou des répertoires sur les disques avec l’hôte, ou entre containers.

On vous le dit ! Vers lOpen Container

Untitled2

Docker est certainement le précurseur, au sein des entreprises et dans le Cloud, des déploiements basés sur des containers. Initialement développé pour Ubuntu, d’autres sociétés ont permis son adoption rapide: RedHat a annoncé un accord de collaboration dès 2013 alors que Amazon et Microsoft ont rapidement rendu leurs plateformes AWS et Azure compatibles avec les containers au format Docker.

D’autres plateformes offrant des solutions basées sur des containers sont en cours de développement. L’initiative la plus sérieuse est celle de Microsoft avec le projet DrawBridge permettant, à terme, l’utilisation de containers Windows dans des serveurs Windows et au sein d’Azure. Canonical, la société chapeautant Ubuntu, développe une extension de LXC, nommée LXD, pour apporter plus de sécurité dans le cloisonnement et l’orchestration des containers. Google, pour sa part, supporte l’initiative Rocket (Rkt) offrant une alternative à Docker sur CoreOS.

Par ailleurs, tous ces acteurs ont compris l’intérêt d’assurer une compatibilité entre leurs différentes solutions pour permettre de passer simplement d’une infrastructure à une autre si bien que Docker, Google, Microsoft et Amazon viennent d’annoncer la création d’un consortium ayant pour objectif de définir le format standard appelé « Open Container ». Ce consortium sera chapeauté par la Fondation Linux et co-organisé par toute une série d’autres acteurs majeurs : VMWare, Cisco, RedHat, HP, IBM, et Google, pour n’en citer que quelques-uns.

Bien entendu, si vous aussi avez fait l’expérience de Docker, n’hésitez pas à venir échanger avec nous sur notre blog !

Vous désirez plus d’information sur DevOps ? Consultez notre site.

[button color=”red” link=”http://devops.agilepartner.net/free-presentation/”]Demandez une présentation gratuite DevOps dans vos bureaux ![/button]

Watch video

In the same category