Rejoignez-nous sur les réseaux sociaux !

Docker : « le futur est déjà présent »

Lancé en 2013 avec la promesse de fournir une enveloppe standard de virtualisation, le fameux container permet aujourd’hui de déployer n’importe quelle application dans n’importe quel environnement. Docker est donc en passe de bousculer le modèle, jusqu’ici très fermé, des grands clouds. Depuis quatre ans, sa culture open source libère l’innovation.

 

« Le futur est déjà présent, il n’est juste pas distribué de façon égale ». Cette phrase tirée du roman de William Gibson, Neuromancer, résume à elle seule l’histoire de Docker. Son fondateur, le Français Solomon Hykes, a en d’ailleurs fait son leitmotiv. C’est en rendant exploitables et accessibles à tous des technologies utilisées uniquement par de grandes entreprises que Docker transforme, depuis quelques années, l’industrie avec un nouveau lexique, un nouveau cadre et de nouvelles normes dans le développement, l’emballage et la gestion des applications.

 

Docker ou l’éloge de la virtualisation simple

La technologie des containers résout le casse-tête du déploiement de code. Elle permet aux applications d’être indépendantes des infrastructures, et aux développeurs de se libérer des contraintes IT. En faisant « don » du code de spécification et d’exécution à une communauté internationale de contributeurs, Docker a créé un modèle standard, collaboratif et innovant… In fine une technologie populaire. Synonyme de simplicité, de robustesse et de portabilité, l’image container est une unité logicielle qui correspond à une fonctionnalité précise, logique et cohérente du système. Elle est autonome, a son propre langage de programmation, gère ses propres données et interagit avec les autres services par API. Un container a simplement besoin d’un système d’exploitation, de programmes et bibliothèques compatibles et de ressources système qui lui permettent de faire tourner un programme spécifique. En outre, avec des containers, on peut créer un environnement qui peut servir pour le développement, les tests et le déploiement. Et ainsi entrer plus vite en production. Docker tient donc toutes ses promesses : celle de l’agilité, avec l’accélération des déploiements d’applications et de leur mise à jour dans un cycle continu, celle de l’interopérabilité et enfin celle de l’automatisation. Docker est ainsi perçu comme la transition vers DevOps en connectant développeurs et opérationnels de façon concrète.

 

Les containers vont-ils remplacer les VM ?

Selon l’étude « « State of the Cloud » publiée par la société RightScale au printemps 2017, Docker est devenu l’outil de prédilection des DevOps. Cette enquête montre que la technologie de conteneurs est aujourd’hui la plus déployée parmi les organisations ayant mis en place des outils dédiés au Devops. Toutefois, l’éditeur estime que les machines virtuelles sont le meilleur endroit pour accueillir les hôtes Docker. D’autant, que les services du container peuvent interagir avec les services d’une VM. L’exécution d’une application dans un ensemble de conteneurs Docker n’empêche pas celle-ci de parler aux services exécutés dans une machine virtuelle. L’éditeur souligne également que mélanger et faire correspondre les hôtes Docker avec des machines virtuelles «traditionnelles», pourraient permettre aux administrateurs système de tirer le maximum de leur matériel physique. Une synergie VM / Docker permettrait donc une optimisation de la capacité. 2 containers docker

Docker ou l’éloge de la virtualisation simple

La technologie des containers résout le casse-tête du déploiement de code. Elle permet aux applications d’être indépendantes des infrastructures, et aux développeurs de se libérer des contraintes IT. En faisant « don » du code de spécification et d’exécution à une communauté internationale de contributeurs, Docker a créé un modèle standard, collaboratif et innovant… In fine une technologie populaire. Synonyme de simplicité, de robustesse et de portabilité, l’image container est une unité logicielle qui correspond à une fonctionnalité précise, logique et cohérente du système. Elle est autonome, a son propre langage de programmation, gère ses propres données et interagit avec les autres services par API. Un container a simplement besoin d’un système d’exploitation, de programmes et bibliothèques compatibles et de ressources système qui lui permettent de faire tourner un programme spécifique. En outre, avec des containers, on peut créer un environnement qui peut servir pour le développement, les tests et le déploiement. Et ainsi entrer plus vite en production. Docker tient donc toutes ses promesses : celle de l’agilité, avec l’accélération des déploiements d’applications et de leur mise à jour dans un cycle continu, celle de l’interopérabilité et enfin celle de l’automatisation. Docker est ainsi perçu comme la transition vers DevOps en connectant développeurs et opérationnels de façon concrète.

 

Les containers vont-ils remplacer les VM ?

Selon l’étude « « State of the Cloud » publiée par la société RightScale au printemps 2017, Docker est devenu l’outil de prédilection des DevOps. Cette enquête montre que la technologie de conteneurs est aujourd’hui la plus déployée parmi les organisations ayant mis en place des outils dédiés au Devops. Toutefois, l’éditeur estime que les machines virtuelles sont le meilleur endroit pour accueillir les hôtes Docker. D’autant, que les services du container peuvent interagir avec les services d’une VM. L’exécution d’une application dans un ensemble de conteneurs Docker n’empêche pas celle-ci de parler aux services exécutés dans une machine virtuelle. L’éditeur souligne également que mélanger et faire correspondre les hôtes Docker avec des machines virtuelles «traditionnelles», pourraient permettre aux administrateurs système de tirer le maximum de leur matériel physique. Une synergie VM / Docker permettrait donc une optimisation de la capacité. 2 containers docker

Un container :

Est Open source (licence Apache 2.0.), S’exécute sur n’importe quelle machine, Est optimisé pour Linux et Windows Server, Réduit la consommation de RAM de 4 à 30 fois.

Pour les Développeurs, Docker accélère les déploiements :

Un container est par principe léger, Il n’embarque pas d’OS (il fait appel directement à l’OS de la machine hôte), Sa pile applicative est proche de l’environnement de production, Un container de test peut intégrer une brique de l’application (base de données, langages, composants…), Il permet de créer une image à partir d’un fichier texte (Dockerfile), Il uniformise les environnements de développement sur les postes de travail.

Un seul clic pour basculer d’un environnement de développement ou de test à celui de production.

Quels avantages coté production:

Docker supporte le concept de microservices, Il n’a pas besoin d’un pool de VM inactives, Un container est bootable, Possibilité de containériser une application, avec pour chaque couche, des containers isolants, Possibilité de mirroring d’applications, Équilibrage de charges entre cloud.

En termes de déploiement continu :

Il limite les mises à jour au container qui nécessite de l’être.

Inconvénients :

Il est difficile de transporter une application de plus de 5 Go dans un conteneur.

Une VM :

Embarque un OS, Si elle embarque Linux, elle peut tourner sur un serveur Windows et inversement, Installation simple : possibilité de la dupliquer à volonté, Elle permet des économies d’échelle (matériel, électricité, espace), Certaines applications critiques nécessitent le recours à une VM et non pas à un conteneur, à cause de leur complexité et des exigences en matière de données et de sécurité.

Pour les développeurs :

Utilisation des ressources adéquates au regard de l’application, Les librairies utilisées par des applications sur plusieurs VM ne peuvent pas être mutualisées.

 

 

Production :

Besoin d’un pool de VM inactives provisionnées à l’avance, Les solutions de reprise et de continuité (BCP/DRP) sont plus faciles à mettre en place.

Sécurité :

Niveau de maîtrise et de sécurité élevée.

 

 

 

 

 

 

 

 

Docker et la sécurité

Articulée autour d’un simple moteur de container open source, la technologie n’intégrait pas au départ de dispositif de sécurité. Quatre ans après, l’offre a évolué. Docker a renforcé l’isolation de ses containers avec un système de droits d’accès et a rajouté à son édition Docker entreprise un module pour scanner les images Docker et les applications contenues afin de repérer les failles de sécurité et ainsi analyser les binaires sur l’ensemble de la pile logicielle. Docker Entreprise donne accès à des plugins et images Docker certifiés par la start-up. Enfin, Docker Store compte aujourd’hui 25 images de containers certifiées fournies par divers éditeurs (Oracle, Microsoft..) et propose des applications dans différents domaines (supervision, stockage de données…). Quant à l’optimisation des architectures, Docker fait appel à des partenaires (IBM, HPE) pour accompagner les clients côté support technique.

Comment Docker est devenu le cœur de l’innovation ?

À chacune de ses étapes de croissance, l’éditeur réussit à impliquer des milliers de développeurs. C’est le principe même de l’innovation : créer un écosystème, une sorte « feature team » à l’échelle de la planète ! En somme, Docker a réussi le tour de force de créer une équipe pluridisciplinaire universelle, composée de développeurs ultra expérimentés, les Craftsman. L’éditeur tire sa force de son écosystème collaboratif.

Dès le départ, Docker est un logiciel open source, sous licence Apache 2.0. Sa technologie étant ouverte, des milliers de développeurs l’ont alimentée et se la sont appropriée si bien qu’aujourd’hui Docker est devenu le seul standard de virtualisation du marché portable de cloud en cloud. Son container logiciel, sorte de boîte hermétique autonome, permet en effet de basculer une application entre les clouds d’Amazon, Google ou encore Microsoft… Cette logique d’open innovation est la clé du succès de Docker : un écosystème d’outils grandissant puisque Docker propose « aux développeurs d’exploiter les briques dans leurs projets, les adapter et en proposer d’autres » précise Solomon Hykes. Ainsi, en fédérant une communauté composée de DevOps, de Craftsman, pourvoyeuse de bonnes pratiques, Docker étend et développe sa brique tout en plaçant au cœur de l’innovation les artisans d’un « bon code ».

En avril 2017, l’éditeur est allé un peu plus loin dans la démarche en lançant le projet open source Moby : une vaste bibliothèque de briques containérisées standard permettant, à terme, de créer des OS personnalisées. Cette initiative collaborative, qui comprend 80 composants open source, est vouée à terme à « fédérer autour de Docker une R&D à grande échelle du niveau de celle des plus grands acteurs de plateformes » précise Solomon Hykes. Aujourd’hui c’est tout un écosystème d’outils et une communauté qui peut ainsi partager et développer ce projet collaboratif. C’est le tour de passe-passe de Docker : « faire en sorte que chaque membre de la communauté apporte sa brique à l’innovation ! ».

Visuel docker sur les composants open source

(Source docker.com. Historique des composants de Docker open source)

On l’aura compris, le marché s’intéresse à Docker car cette technologie est capable d’englober l’ensemble des fonctions dans une plateforme unique. Quant aux entreprises, les capacités de portabilité et de flexibilité au niveau de l’application sont autant d’attributs susceptibles de les séduire.

 

Mon organisation a-t-elle besoin d’un projet de déploiement Docker ?

• Oui, car je veux que mes équipes de développement aient chacune un périmètre fonctionnel restreint pour assurer des itérations courtes et par conséquent être agiles.

• Oui, car je veux que mes développeurs, grâce à une technologie de container, puissent être au plus près de l’environnement de production et je ne veux plus entendre des « Ah ! Je ne comprends pas… Ça marchait sur ma machine ! ».

• Oui, car je veux de la Haute Disponibilité et un système ZDD (Zero Downtime Deployment) pour assurer des cycles de livraison automatique (Continuous Deployment).

 

Les microservices et les conteneurs peuvent-ils être le concept de base pour mes développements ?

• Oui, car je veux que mon système ait la capacité de s’auto-réparer (Self-Healing) dans le cas où une ou plusieurs instances de microservices se trouvent défaillantes (elles seront automatiquement redéployées).

• Oui, car je veux que mes conteneurs soient signés à chaque étape de ma chaîne de production logicielle pour donner la garantie à mes clients qu’il n’y a pas eu de modifications du livrable par une entité tierce.

Sur le sujet

Alain Belut : « La montée en puissance de Microsoft Azure est impressionnante »
​Le choix de Azure est essentiellement un choix IT
WEBAPI2: PERSONNALISER LE ROUTING
Retour sur la Microsoft Azure Tour (Paris)