docker

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

Margot P

Margot P

6 min

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 d’exécuter des conteneurs sur Windows ou Mac grâce à une ” layer ” de virtualisation Linux entre l’OS 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 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.

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.

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.