JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

Docker : qu’est-ce que c’est et comment l’utiliser ?

docker

Docker est la plateforme de conteneurisation la plus utilisée. Découvrez tout ce que vous devez savoir à son sujet : qu’est-ce que c’est, à quoi ça sert, comment ça fonctionne et quelles formations permettent d’apprendre à l’utiliser.

Les conteneurs et les microservices sont de plus en plus utilisés pour le développement et le déploiement des applications. C’est ce qu’on appelle le développement ” cloud-native “. Dans ce contexte, Docker est devenue une solution massivement exploitée en entreprise.

Qu'est-ce qu'un conteneur ?

Avant de découvrir Docker, vous devez comprendre ce qu’est un conteneur. Il s’agit d’un environnement d’exécution léger, et d’une alternative aux méthodes de virtualisation traditionnelles basées sur les machines virtuelles.

L’une des pratiques clés du développement de logiciel moderne est d’isoler les applications déployées sur un même hôte ou sur un même cluster. Ceci permet d’éviter qu’elles interfèrent.

Pour exécuter les applications, il est toutefois nécessaire d’exploiter des packages, des bibliothèques et divers composants logiciels. Pour exploiter ces ressources tout en isolant une application, on utilise depuis longtemps les machines virtuelles.

Celles-ci permettent de séparer les applications entre elles sur un même système, et de réduire les conflits entre les composants logiciels et la compétition pour les ressources. Cependant, une alternative a vu le jour : les conteneurs.

Une machine virtuelle s’apparente à un système d’exploitation complet, d’une taille de plusieurs gigaoctets, permettant le partitionnement des ressources d’une infrastructure. Un conteneur délivre uniquement les ressources nécessaires à une application.

En effet, le conteneur partage le kernel de son OS avec d’autres conteneurs. C’est une différence avec une machine virtuelle, utilisant un hyperviseur pour distribuer les ressources hardware.

Cette méthode permet de réduire l’empreinte des applications sur l’infrastructure. Le conteneur regroupe tous les composants système nécessaires à l’exécution du code, sans pour autant peser aussi lourd d’un OS complet.

De même, un conteneur est plus léger et plus simple qu’une machine virtuelle et peut donc démarrer et s’arrêter plus rapidement. Il est donc plus réactif, et adaptable aux besoins fluctuants liés au ” scaling ” d’une application.

Dernier point fort : contrairement à un hyperviseur, un moteur de conteneur n’a pas besoin d’émuler un système d’exploitation complet. Le conteneur offre donc de meilleures performances qu’un déploiement sur machine virtuelle traditionnelle.

Qu'est-ce que Docker ?

Docker est une plateforme de conteneurs lancée en 2013 ayant largement contribué à la démocratisation de la conteneurisation. Elle permet de créer facilement des conteneurs et des applications basées sur les conteneurs. Il en existe d’autres, mais celle-ci est la plus utilisée. Elle est par ailleurs plus facile à déployer et à utiliser que ses concurrentes.

C’est une solution open source, sécurisée et économique. De nombreux individus et entreprises contribuent au développement de ce projet. Un large écosystème de produits, services et ressources sont développés par cette vaste communauté.

Initialement conçue pour Linux, Docker permet aussi la prise en charge des containers sur Windows ou Mac grâce à une ” layer ” de virtualisation Linux entre le système d’exploitation Windows / macOS et l’environnement runtime Docker. Il est donc possible d’exécuter des conteneurs Windows natifs sur des environnements de conteneurs Windows ou Linux.

Quels sont les différents éléments de Docker ?

La plateforme Docker repose sur plusieurs technologies et composants. Voici les principaux éléments.

Docker Engine

Le Docker Engine est l’application à installer sur la machine hôte pour créer, exécuter et gérer des conteneurs Docker. Comme son nom l’indique, il s’agit du moteur du système Docker.

C’est ce moteur qui regroupe et relie les différents composants entre eux. C’est la technologie client-serveur permettant de créer et d’exécuter les conteneurs, et le terme Docker est souvent employé pour désigner Docker Engine.

On distingue le Docker Engine Enterprise et le Docker Engine Community. La Docker Community Edition est la version originale, proposée en open source gratuitement.

La version Enterprise, lancée en 2017, ajoute des fonctionnalités de gestion comme le contrôle de cluster et la gestion d’image ou la détection de vulnérabilité. Elle est tarifée à 1500 $ par noeud et par an.

Docker Daemon

Le Docker Daemon traite les requêtes API afin de gérer les différents aspects de l’installation tels que les images, les conteneurs ou les volumes de stockage.

Docker Client

Le client Docker est la principale interface permettant de communiquer avec le système Docker. Il reçoit les commandes par le biais de l’interface de ligne de commande et les transmet au Docker Daemon.

Dockerfile

Chaque conteneur Docker débute avec un ” Dockerfile “. Il s’agit d’un fichier texte rédigé dans une syntaxe compréhensible, comportant les instructions de création d’une image Docker.

Un Dockerfile précise le système d’exploitation sur lequel sera basé le conteneur, et les langages, variables environnementales, emplacements de fichiers, ports réseaux et autres composants requis.

Les images Docker

Une image Docker est un modèle en lecture seule, utiliser pour créer des conteneurs Docker. Elle est composée de plusieurs couches empaquetant toutes les installations, dépendances, bibliothèques, processus et codes d’application nécessaires pour un environnement de conteneur pleinement opérationnel.

Après avoir écrit le Dockerfile, on invoque l’utilitaire ” build “ pour créer une image basée sur ce fichier. Cette image se présente comme un fichier portable indiquant quels composants logiciels le conteneur exécutera et de quelle façon.

Les conteneurs Docker

Un conteneur Docker ou Docker Container est une instance d’image Docker exécutée sur un microservice individuel ou un stack d’application complet. En lançant un conteneur, on ajoute une couche inscriptible sur l’image. Ceci permet de stocker tous les changements apportés au conteneur durant le runtime.

Docker run

L’utilitaire “run” de Docker est la commande permettant de lancer un conteneur. Chaque conteneur est une instance d’une image.

Les conteneurs sont conçus pour être temporaires, mais peuvent être arrêtés et redémarrés dans le même état. Plusieurs instances d’une même image peuvent être exécutées simultanément.

Le registre Docker

Le registre Docker est un système de catalogage permettant l’hébergement et le ” push and pull ” des images Docker. Il est possible d’utiliser votre propre registre local, ou l’un des nombreux services de registre hébergés par des tiers comme Red Hat Quay, Amazon ECR, Google Container Registry.

Le Docker Hub est le registre officiel de Docker. Il s’agit d’un répertoire SaaS permettant de gérer et de partager les conteneurs. On peut y trouver des images Docker de projets open source ou de vendeurs logiciels. Il est possible de télécharger ces images et de partager les vôtres.

Un registre Docker organise les images dans différents répertoires de stockage. Chacun d’entre eux contient différentes versions d’une image Docker partageant le même nom d’image.

L'histoire de Docker

Docker Inc a été fondée par Solomon Hykes, Kamel Founadi et Sebastien Pahl au cours du groupe d’incubation de startups Y Combinator Summer 2010. L’entreprise fut lancée en 2011.

Elle fut aussi l’une des 12 startups de la première cohorte de Founder’s Den. Le projet fut initié par Solomon Hykes en France, sous la forme d’un projet interne de l’entreprise de plateforme en tant que service dotCloud.

En 2013, Docker fut présentée au public à Santa Clara dans le cadre de la PyCon. Le logiciel a été lancée en open-source en mars 2013. A l’époque, LXC était utilisé comme environnement d’exécution par défaut, avant d’être remplacé un an plus tard avec la version 0.9 de Docker par son propre composant libcontainer écrit en langage Go.

Au fil des années, Docker a noué de nombreux partenariats stratégiques avec les géants du Cloud et de l’IT : Red Hat en 2013, Microsoft , iBM et Amazon Web Services en 2014, Oracle en 2015, mais aussi Cisco, Google ou Huawei.

Depuis 2016, Docker peut être utilisé nativement sur Windows 10. La même année, une analyse de LinkedIn révèle que le nombre de mentions du logiciel sur les profils des utilisateurs a augmenté de 160%.

Comment fonctionne Docker ?

Le fonctionnement de Docker repose sur le noyau Linux et les fonctions de ce noyau, comme les groupes de contrôle cgroups et les espaces de nom. Ce sont ces fonctions qui permettent de séparer les processus pour qu’ils puissent s’exécuter de façon indépendante.

En effet, le but des conteneurs est d’exécuter plusieurs processus et applications séparément. C’est ce qui permet d’optimiser l’utilisation de l’infrastructure sans pour autant atténuer le niveau de sécurité par rapport aux systèmes distincts.

Tous les outils de conteneurs comme Docker sont associés à un modèle de déploiement basé sur une image. Ce modèle simplifie le partage d’une application ou d’un ensemble de services entre plusieurs environnements.

En outre, Docker permet d’automatiser le déploiement des applications au sein d’un environnement de conteneurs. Grâce à ces divers outils, les utilisateurs profitent d’un accès complet aux applications et sont en mesure d’accélérer le déploiement, de contrôler les versions et de les attribuer.

Qu'est-ce que l'orchestration de conteneurs ?

Docker permet de faciliter la coordination des comportements entre les conteneurs, et de les connecter entre eux pour créer des stacks d’applications. Pour simplifier le processus de développement et de test d’applications multi-conteneurs, Docker a créé Docker Compose.

Il s’agit d’un outil de ligne de commande, similaire au client Docker, utilisant un fichier de description spécifiquement formaté pour assembler les applications à partir de conteneurs multiples et de les exécuter sur un hôte unique.

Lorsqu’une application est prête à être déployée sur Docker, il est nécessaire de pouvoir approvisionner, configurer, étendre et surveiller les conteneurs sur l’architecture de microservice.

Pour y parvenir, on utilise des systèmes d’orchestration de conteneurs open source tels que Kubernetes, Mesos et Docker Swarm. Ces systèmes fournissent les outils nécessaires pour gérer les clusters de conteneurs.

Ces solutions permettent notamment de répartir les ressources entre les conteneurs, d’ajouter ou de supprimer des conteneurs, de gérer les interactions entre les conteneurs, de surveiller leur statut, ou d’équilibrer la charge entre les microservices.

Qu'est-ce que Docker Desktop ?

Docker Desktop est l’application PC native conçue par Docker pour Windows et Mac. C’est la façon la plus simple d’exécuter, de construire, de déboguer et de tester des applications Dockerisées.

Ce logiciel rassemble les fonctionnalités principales comme les cycles de test rapides, les notifications de changement de fichier, une prise en charge du réseau d’entreprise, ou encorez une flexibilité complète pour le choix de proxies et de VPN.

L’application Docker Desktop regroupe des outils développeurs, Docker App, Kubernetes et la synchronisation de version. Elle permet de créer des images et des templates en choisissant les langages et outils.

Les principaux avantages sont la vitesse, la sécurité et la flexibilité. On distingue l’édition Community gratuite, et l’édition Enterprise payante ajoutant des fonctionnalités supplémentaires pour la sécurité, la gestion, l’orchestration et la gestion.

Deux versions différentes de Docker Desktop sont proposées. La version Stable a été rigoureusement testée, et peut être utilisée pour le développement d’applications fiables. Les mises à jour sont relaxées parallèlement à celles du Docker Engine.

En revanche, la version Edge comporte de nouvelles fonctionnalités expérimentales du Docker Engine. Il y a donc un risque de bugs, de plantage et autres problèmes techniques. Toutefois, cette version permet d’essayer les nouveautés en avant-première.

Installer un seveur web sur un conteur Docker

Il est également possible d’installer un serveur web Apache à l’intérieur d’un conteneur Docker. Pour rappel, Apache Web Server est un outil open source de création, de déploiement et de gestion de serveur web.

Parmi ses nombreuses fonctionnalités, on compte un mécanisme d’authentification, une prise en charge des bases de données, le scripting server-side, et la compatibilité avec de multiples langages de programmation.

La capacité à supporter de larges volumes de trafic avec une configuration minimale est l’un des pricnipaux avantages d’Apache. Il est compatible avec Linux, macOS et Windows. Les entreprises l’utilisent pour l’hébergement virtuel ou partagé.

Les avantages de Docker

Docker présente de multiples avantages, en permettant de développer des applications faciles à assembler, à maintenir et à déplacer. Les conteneurs permettent l’isolation des applications entre elles et du système sous-jacent.

Ils permettent aussi la portabilité, puisque les applications n’ont pas à être liées au système d’exploitation hôte. Les applications conteneurisées peuvent par exemple être aisément transférées de systèmes sur site vers les environnements Cloud.

De plus, la conteneurisation avec Docker permet d’interchanger les composants du stack d’application. Enfin, les conteneurs simplifient l’orchestration et le scaling.

Qui utilise Docker ?

L’outil Docker est à la fois bénéfique pour les développeurs et pour les administrateurs système. On le retrouve souvent au coeur des processus DevOps.

Les développeurs peuvent se focaliser sur leur code, sans avoir à se soucier du système sur lequel il sera exécuté. En outre, ils peuvent gagner du temps en incorporant des programmes pré-conçus pour leurs applications.

Comment apprendre à utiliser Docker ?

Docker est de plus en plus utilisé pour le développement d’applications. Il est aujourd’hui indispensable de maîtriser cette plateforme de conteneurisation en entreprise.

Pour apprendre à l’utiliser et comprendre toutes ses subtilités, vous pouvez vous tourner vers une formation de Data Engineer ou une formation de ML Engineer proposée par DataScientest.

Nos formations sont disponibles pour les entreprises ou les particuliers, et permettent d’acquérir rapidement les compétences requises pour l’ingénierie des données ou du Machine Learning et notamment la maîtrise de Docker.

Vous pouvez compléter ces formations en seulement 11 semaines en mode BootCamp, ou neuf mois en Formation Continue. Après avoir complété ce parcours, vous recevez un diplôme certifié par l’Université de la Sorbonne et vous pourrez utiliser Docker au service de votre entreprise. 

Vous savez tout sur Docker et les conteneurs. Découvrez notre dossier complet sur le Machine Learning et pourquoi Kubernetes est devenu un outil indispensable pour les Data Scientists.

 

Facebook
Twitter
LinkedIn

Tag de l'article :

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone

S'inscrire à la JPO :

Vous souhaitez recevoir notre newsletter data 💌 hebdomadaire ?