My IBM Se connecter S’abonner

Qu’est-ce que Docker ?

6 juin 2024

Auteurs

Ian Smalley

Senior Editorial Strategist

Qu’est-ce que Docker ?

Docker est une plateforme open source qui permet aux développeurs de créer, déployer, exécuter, mettre à jour et gérer des conteneurs.

Les conteneurs sont des composants exécutables standardisés qui combinent le code source de l’application avec les bibliothèques du système d’exploitation (OS) et les dépendances requises pour exécuter ce code dans n’importe quel environnement.

Il convient de noter que lorsque l’on parle de Docker, on fait généralement référence à Docker Engine, l’environnement conçu pour créer et exécuter des conteneurs. Docker fait également référence à Docker, Inc.1, la société qui vend la version commerciale de Docker. Le terme désigne également le projet open source Docker2 auquel contribuent Docker, Inc. et de nombreuses autres entreprises et personnes.

Les conteneurs simplifient le développement et la livraison d’applications distribuées. Leur popularité ne cesse de croître à mesure que les entreprises adoptent un développement cloud natif et les environnements multicloud hybride. Les développeurs peuvent créer des conteneurs sans Docker en travaillant directement avec les fonctionnalités intégrées à Linux et à d’autres systèmes d’exploitation, mais Docker accélère et facilite la conteneurisation. À ce jour, Docker indique que plus de 20 millions de développeurs utilisent la plateforme chaque mois3. Comme d’autres technologies de conteneurisation, dont Kubernetes, Docker joue un rôle essentiel dans le développement de logiciels modernes, en particulier dans l’architecture de microservices.

Que sont les microservices ?

Contrairement à l’approche monolithique traditionnelle d’une grande application étroitement couplée, les microservices fournissent un cadre architectural cloud natif. Ce dernier compose une application unique à partir de nombreux composants ou services plus petits, faiblement couplés et déployables indépendamment. Chaque service peut être conteneurisé avec Docker pour simplifier le déploiement et permettre aux équipes de déployer de nouvelles versions et de dimensionner les applications selon leurs besoins.

Vue aérienne d’autoroutes

Gardez la tête dans le cloud 


Recevez la newsletter hebdomadaire Think pour obtenir des conseils d’experts sur l’optimisation des paramètres multicloud à l’ère de l’IA.

Comment fonctionnent les conteneurs ?

Les conteneurs sont rendus possibles par les fonctionnalités d’isolation des processus et de virtualisation intégrées au noyau Linux. Ces capacités comprennent les groupes de contrôle pour la répartition des ressources entre les processus et des espaces de noms pour restreindre l’accès ou la visibilité d’un processus sur d’autres ressources ou zones du système.

Les conteneurs permettent à plusieurs composants d’application de partager les ressources d’une instance unique du système d’exploitation hôte. Ce partage est similaire à la façon dont un hyperviseur permet à plusieurs machines virtuelles (VM) de partager l’unité centrale de traitement (CPU), la mémoire et d’autres ressources d’un seul serveur matériel.

La technologie des conteneurs offre les mêmes fonctions et atouts que les machines virtuelles (VM), comme l’isolation des applications, l’évolutivité et la rentabilité, ainsi que d’autres avantages importants :

  • Un poids plus léger : contrairement aux VM, les conteneurs ne transportent pas la charge utile d’une instance de système d’exploitation et d’un hyperviseur entiers. Ils comprennent uniquement les processus et dépendances du système d’exploitation nécessaires à l’exécution du code. La taille des conteneurs est mesurée en mégaoctets (contre des gigaoctets pour certaines VM), ce qui permet une meilleure utilisation de la capacité matérielle et des temps de démarrage plus rapides.

  • Une productivité accrue : les applications conteneurisées peuvent être écrites une seule fois et exécutées n’importe où. De plus, les conteneurs sont plus rapides et plus faciles à déployer, à provisionner et à redémarrer que les VM.

  • Une plus grande efficacité : avec les conteneurs, les développeurs peuvent exécuter plusieurs fois plus de copies d’une application sur le même matériel que s’ils utilisaient des VM. Cette efficacité peut réduire les dépenses liées au cloud.

Les entreprises qui utilisent des conteneurs font état de bien d’autres avantages, dont une meilleure qualité des applications et une réponse plus rapide aux évolutions du marché.

AI Academy

Se préparer à l’IA avec le cloud hybride

Dirigé par des leaders d’opinion IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires qui leur permettront d’orienter leurs investissements IA vers les opportunités les plus prometteuses.

Pourquoi utiliser Docker et à quoi doit-il son succès ?

Docker est l’outil de conteneurisation le plus utilisé, avec une part de marché de 82,84 %4. Docker est tellement connu que, de nos jours, les termes « Docker » et « conteneurs » sont utilisés de manière interchangeable. Pourtant, lorsque Docker a été rendu public en tant que logiciel open source en 2013, les technologies liées aux conteneurs existaient déjà depuis des années, voire des décennies5.

En 2008, LinuXContainers (LXC) a été implémenté dans le noyau Linux, permettant ainsi la virtualisation d’une seule instance de Linux. Bien que LXC soit encore utilisé aujourd’hui, de nouvelles technologies de noyau Linux sont disponibles. Ubuntu, un système d’exploitation Linux moderne et open source, offre également cette possibilité. Docker permet aux développeurs d’accéder à ces capacités de conteneurisation natives en utilisant des commandes simples et de les automatiser grâce à une interface de programmation des applications (API) qui permet d’économiser du travail.

Docker ou LXC

Docker présente de nombreux avantages par rapport à LXC, plus ancien et moins compatible.

Portabilité améliorée et renforcée des conteneurs

Alors que les conteneurs LXC font souvent référence à des configurations spécifiques à une machine, les conteneurs Docker s’exécutent sans modification sur n’importe quel environnement de bureau, de centre de données ou de cloud computing.

Poids encore plus léger, mises à jour plus granulaires

Avec Docker, les développeurs peuvent combiner plusieurs processus dans un seul conteneur. Cette flexibilité permet de créer une application qui peut continuer à fonctionner alors que l’une de ses parties est arrêtée pour une mise à jour ou une réparation.

Création de conteneurs automatisée

Docker permet de créer automatiquement un conteneur en s’appuyant sur le code source de l’application.

Gestion des versions de conteneur

Docker peut suivre les versions d’une image de conteneur, revenir aux versions précédentes et savoir qui a créé une version et comment. Docker peut même télécharger uniquement les deltas (versions partielles de modules logiciels) entre une version existante et une nouvelle version.

Réutilisation des conteneurs

Les développeurs ont accès à un registre open source regroupant des milliers de conteneurs créés par les utilisateurs.

Aujourd’hui, la conteneurisation Docker fonctionne également avec Microsoft Windows Server et Apple MacOS. Les développeurs peuvent exécuter des conteneurs Docker sur n'importe quel système d'exploitation. Tous les principaux fournisseurs de services cloud (CSP), notamment Amazon Web Services (AWS), Microsoft Azure, Google Cloud Services et IBM Cloud, proposent des services spécifiques pour aider les développeurs à créer, déployer et exécuter des applications conteneurisées avec Docker.

Architecture, termes et outils Docker

Docker repose sur une architecture client/serveur. Vous trouverez ci-dessous la liste des principaux composants associés à Docker, ainsi que d’autres termes et outils Docker.

Hôte Docker : une machine physique ou virtuelle s’exécutant sur Linux (ou tout autre système d’exploitation compatible avec Docker Engine).

Docker Engine : une application client/serveur composée du démon Docker, d’une API Docker qui interagit avec le démon et d’une interface de ligne de commande (CLI) qui communique avec le démon.

Démon Docker : le démon Docker est un service qui crée et gère des images à l’aide des commandes du client. En d’autres termes, le démon Docker agit comme le centre de contrôle pour l’installation Docker.

Client Docker : le client Docker fournit l’interface de ligne de commande qui accède à l’API Docker (une API REST) pour communiquer avec le démon Docker par le biais de sockets Unix ou d’une interface réseau. Le client peut être connecté à un démon à distance. Autre option, exécuter les deux sur le même système informatique.

Objets Docker : les objets Docker sont les composants d’un déploiement Docker qui permettent d’emballer et de distribuer les applications. Ils associent images, conteneurs, réseaux, volumes, plug-ins et bien plus encore.

Conteneur Docker : les conteneurs Docker sont les instances en cours d’exécution des images Docker. Alors que les images Docker sont des fichiers en lecture seule, les conteneurs sont des contenus dynamiques, éphémères et exécutables. Les utilisateurs peuvent interagir avec eux, et les administrateurs peuvent ajuster leurs paramètres et conditions grâce aux commandes Docker.

Images Docker : les images Docker contiennent le code source de l’application exécutable et tous les outils, bibliothèques et dépendances dont le code de l’application a besoin pour s’exécuter en tant que conteneur. Lorsqu’un développeur exécute l’image Docker, elle devient une instance (ou plusieurs instances) du conteneur.

Les images Docker peuvent être créées en partant de zéro, mais la plupart des développeurs les extraient des référentiels courants. Plusieurs images Docker peuvent être créées à partir d’une seule image de base ; elles partageront les points communs de leur pile.

Les images Docker sont composées de couches, chacune correspondant à une version de l’image. Chaque fois qu’un développeur apporte des modifications à une image, une nouvelle couche supérieure est créée et celle-ci remplace la couche supérieure précédente en tant que version actuelle de l’image. Les couches précédentes sont enregistrées en vue d’une annulation ou pour être réutilisées dans d’autres projets.

Chaque fois qu’un conteneur est créé à partir d’une image Docker, une nouvelle couche appelée couche conteneur est créée. Les modifications apportées au conteneur, comme l’ajout ou la suppression de fichiers, sont enregistrées dans la couche conteneur, et ces modifications n’existent que pendant l’exécution du conteneur.

Ce processus itératif de création d’images permet d’améliorer l’efficacité globale, car plusieurs instances de conteneurs actives peuvent s’exécuter à partir d’une seule image de base. Dans ce cas, elles utilisent une pile commune.

Build Docker : une commande qui associe outils et fonctionnalités pour créer des images Docker.

Fichier Docker : chaque conteneur Docker commence par un simple fichier texte contenant des instructions pour créer l’image du conteneur Docker. Dockerfile automatise la création d’images Docker. Il s’agit essentiellement d’une liste d’instructions CLI que Docker Engine exécute pour assembler l’image. La liste des commandes Docker est longue, mais standardisée : les opérations Docker fonctionnent de la même manière, quels que soient le contenu, l’infrastructure et les autres variables d’environnement.

Documentation Docker : la bibliothèque officielle de ressources, manuels et guides Docker pour la création d’applications conteneurisées.

Docker Hub : Docker Hub6 est le référentiel public des images Docker, qui se présente comme la plus grande bibliothèque et communauté au monde pour les images de conteneurs7. Il contient plus de 100 000 images de conteneurs provenant de fournisseurs de logiciels commerciaux, de projets open source et de développeurs individuels. Docker Hub comprend des images produites par Docker, Inc., des images certifiées appartenant au registre de confiance Docker et des milliers d’autres images.

Tous les utilisateurs de Docker Hub peuvent partager leurs images à volonté. Ils peuvent également télécharger des images de base prédéfinies à partir du système de fichiers Docker comme point de départ pour tout projet de conteneurisation.

D’autres référentiels d’images existent, notamment GitHub8. GitHub est un service d’hébergement de dépôts bien connu pour ses outils de développement d’applications et comme plateforme favorisant la collaboration et la communication. Les utilisateurs de Docker Hub peuvent créer un dépôt qui peut contenir de nombreuses images. Le dépôt peut être public ou privé et lié à des comptes GitHub ou BitBucket.

Docker Desktop : une application pour Mac ou Windows qui comprend, entre autres, Docker Engine, le client Docker CLI, Docker Compose et Kubernetes. Docker Desktop permet également d’accéder à Docker Hub.

Registre Docker : un système de stockage et de distribution évolutif et open source pour les images Docker. Il permet aux développeurs de suivre les versions d’image dans les référentiels grâce au balisage à des fins d’identification. Le suivi et l’identification sont réalisés à l’aide de Git, un outil de contrôle de version.

Plug-in Docker : les développeurs utilisent des plug-ins pour rendre Docker Engine encore plus fonctionnel. Plusieurs plug-ins Docker prenant en charge l’autorisation, le volume et le réseau sont inclus dans le système de plug-in de Docker Engine ; des plug-ins tiers peuvent également être chargés.

Extensions Docker : les extensions Docker permettent aux développeurs d’utiliser des outils tiers dans Docker Desktop pour étendre ses fonctions. Parmi les extensions pour outils de développement, citons le développement d’applications, la sécurité ou encore l’observabilité Kubernetes.

Docker Compose : les développeurs peuvent utiliser Docker Compose pour gérer des applications multiconteneurs, où tous les conteneurs s’exécutent sur le même hôte Docker. Docker Compose crée un fichier YAML (.YML) qui spécifie les services inclus dans l’application et peut déployer et exécuter des conteneurs à l’aide d’une seule commande. La syntaxe YAML étant indépendante du langage, les fichiers YAML peuvent être utilisés dans des programmes écrits en Java, Python, Ruby et bien d’autres langages.

Les développeurs peuvent également utiliser Docker Compose pour définir des volumes persistants pour le stockage, spécifier des nœuds de base et documenter et configurer les dépendances de service.

Kubernetes et orchestration des conteneurs

Lorsque seuls quelques conteneurs sont exécutés, la gestion des applications dans Docker Engine, l’environnement d’exécution du secteur, est assez simple. Pour les déploiements comprenant des milliers de conteneurs et des centaines de services, il est toutefois quasi impossible de surveiller et de gérer le cycle de vie des conteneurs sans un outil d’orchestration de conteneurs.

Bien que Docker comprenne son propre outil d’orchestration (appelé Docker Swarm), Kubernetes est la norme du secteur. Parmi les autres plateformes d’orchestration des conteneurs connues, citons Apache Mesos et Nomad.

Kubernetes est une plateforme open source d’orchestration de conteneurs issue de Borg, un projet développé pour un usage interne chez Google. Disponible au public depuis 2014, Kubernetes planifie et automatise les tâches faisant partie intégrante de la gestion des architectures basées sur des conteneurs, notamment le déploiement de conteneurs, les mises à jour, la découverte de services, le provisionnement du stockage, l’équilibrage de charge, la surveillance de l’état de santé, et plus encore. En 2015, Google a fait don de Kubernetes à la Cloud Native Computing Foundation (CNCF)9, la plateforme open source et indépendante des fournisseurs d’informatique cloud natif.

En outre, l’écosystème d’outils open source pour Kubernetes, notamment Istio, Knative et Tekton, permet aux entreprises de déployer une plateforme en tant que service (PaaS) de haute productivité pour les applications conteneurisées . Cet écosystème permet également de passer plus rapidement à l’informatique sans serveur.

Normes de Docker et du secteur des conteneurs

Fondée en 2015 après que Docker a fait don de la spécification de l’image de conteneur et du code d’exécution runc, l’Open Container Initiative (OCI)10 est un projet de la Fondation Linux visant à créer des normes de secteur ouvertes autour du format et de l’exécution de l’image de conteneur. L’OCI regroupe des entreprises de premier plan, dont Docker, IBM et Red Hat. Elle soutient l’innovation tout en aidant les organisations à éviter l’enfermement propriétaire.

Bien que Docker soit la technologie de conteneur la plus connue et la plus utilisée, l’écosystème dans son ensemble s’est standardisé sur containerd et d’autres alternatives, notamment LXC, CRI-O, Podman et d’autres. En 2017, Docker a fait don du projet containerd à la CNCF. Containerd est un environnement d’exécution de conteneur standard qui utilise runc et constitue l’environnement d’exécution de conteneur principal du moteur Docker.

Sécurité Docker

La complexité des workloads conteneurisées demande de mettre en œuvre et de maintenir des contrôles de sécurité pour protéger les conteneurs, ainsi que leur infrastructure sous-jacente. Les pratiques de sécurité des conteneurs Docker sont pensées pour protéger les applications conteneurisées contre des risques tels que les violations de la sécurité, les logiciels malveillants et les acteurs malveillants.

Les conteneurs Docker étant isolés les uns des autres et du système hôte, ils sont sécurisés dès leur conception. Cependant, leur isolation n’est pas totale. La sécurité Docker s’articule autour d’un cadre holistique Zero Trust qui englobe l’exécution, la construction et l’orchestration des conteneurs.

Le besoin de sécuriser les conteneurs, Docker ou autres, a accru la popularité de DevSecOps. Il s’agit d’une approche qui consiste à automatiser l’intégration des pratiques de sécurité à chaque phase du cycle de développement logiciel, de la conception au déploiement en passant par l’intégration, les tests et la livraison. En outre, les bonnes pratiques de sécurité Docker exigent l’usage d’outils et de solutions de sécurité des conteneurs tiers, comme l’analyse et la surveillance, afin de détecter les problèmes avant qu’ils n’affectent la production.

Cas d’utilisation de Docker

Migration vers le cloud

La portabilité de Docker simplifie et accélère le processus de migration vers le cloud à partir de divers environnements, qu’il s’agisse de déplacer les données, applications et workloads d’un centre de données sur site vers une infrastructure cloud, ou d’un environnement cloud vers un autre.

Architecture de type microservices (microservices)

Selon Statista, plus de 85 % des grandes entreprises internationales utilisent les microservices pour développer leurs applications11. Docker simplifie le déploiement des applications car chaque microservice peut être conteneurisé, puis développé et géré indépendamment pour éviter aux développeurs de configurer et de gérer des environnements particuliers.

Intégration continue et livraison continue (CI/CD)

Si Docker est idéal pour les pipelines d’intégration continue et de livraison continue (CI/CD), c’est parce qu’il fournit un environnement cohérent pour tester et déployer les applications, permettant de réduire le risque d’erreur lors du déploiement.

DevOps

Associer développement logiciel en microservices et Docker fournit une base solide aux équipes DevOps. Cela leur permet d’adopter des pratiques agiles pour itérer et expérimenter rapidement, une condition essentielle pour livrer logiciels et services à la vitesse exigée par le marché.

Déploiement multicloud hybride

Une technologie conteneurisée légère comme Docker facilite le déplacement des applications dans différents environnements. Les principaux fournisseurs de services cloud proposent tous des services de développement et de gestion qui prennent en charge l’exécution de Docker dans les environnements de cloud hybride pour unifier les paramètres sur site, dans le cloud public, le cloud privé et en périphérie (edge). Docker peut être facilement déployé sur une infrastructure informatique multicloud, qui réunit les services cloud de plusieurs fournisseurs.

Conteneurs à la demande (CaaS)

Le CaaS (conteneurs à la demande) permet aux développeurs de gérer et de déployer des applications conteneurisées pour faciliter l’exécution des conteneurs Docker à grande échelle. Les principaux CSP proposent tous le CaaS dans le cadre de leur portefeuille de services cloud, ainsi que l’infrastructure à la demande (IaaS), les logiciels à la demande (SaaS), etc.

Intelligence artificielle/machine learning (IA/ML)

Alliant rapidité, simplicité et portabilité, Docker accélère le développement de l’intelligence artificielle et du machine learning, stimule l’innovation et réduit les délais de mise sur le marché. Par ailleurs, Docker Hub héberge des centaines d’images AL/ML qui facilitent davantage le travail des équipes de développement AL/ML. En 2023, Docker a lancé Docker AI12, qui offre aux développeurs des conseils automatisés et adaptés au contexte lorsqu'ils modifient un fichier Dockerfile ou Docker Compose.

Solutions connexes

Solutions connexes

IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud est une plateforme de conteneurs OpenShift entièrement gérée.

Découvrir Red Hat OpenShift
Solutions de conteneurs

Les solutions de conteneurs exécutent et étendent les workloads conteneurisés avec sécurité, innovation open source et déploiement rapide.

Découvrir les conteneurs
Services de conseil cloud 

Déverrouillez de nouvelles fonctionnalités et stimulez l’agilité de votre entreprise grâce aux services de conseil d’IBM Cloud. Découvrez comment co-créer des solutions, accélérer la transformation numérique et optimiser les performances grâce à des stratégies de cloud hybride et à des partenariats d’experts.

Services cloud
Passez à l’étape suivante

Modernisez votre infrastructure grâce aux solutions de conteneurs IBM. Exécutez, mettez à l’échelle et gérez des workloads conteneurisés dans tous les environnements avec flexibilité, sécurité et efficacité en utilisant la plateforme complète de conteneurs d’IBM.

Découvrir les solutions de conteneurs Créer votre compte IBM Cloud gratuit