Docker

menu icon

Docker

Docker est une plateforme à code source ouvert qui permet de créer, de déployer et de gérer des applications conteneurisées. Découvrez les conteneurs, ce qui les distingue des machines virtuelles et pourquoi Docker est si largement adopté et utilisé.

Qu'est-ce que Docker ?

Docker est une plateforme de conteneurisation à code source ouvert. Avec cette plateforme, les développeurs peuvent regrouper les applications dans des conteneurs, c'est-à-dire des composants exécutables normalisés combinant le code source des applications avec les bibliothèques du système d'exploitation (SE) et les dépendances nécessaires pour exécuter ce code dans n'importe quel environnement. Les conteneurs simplifient la distribution des applications réparties et connaissent un succès croissant, alors que les entreprises basculent vers des environnements de développement cloud natifs et multiclouds hybrides.

Les développeurs peuvent créer des conteneurs sans Docker, mais la plateforme rend la création, le déploiement et la gestion des conteneurs plus simples et plus sûrs. Docker est essentiellement un kit d'outils avec lequel les développeurs créent, déploient, exécutent, mettent à jour et arrêtent des conteneurs à l'aide de commandes simples et d'une automatisation qui permet de gagner du temps grâce à une API unique.

Docker fait également référence à Docker, Inc. (lien externe à IBM), la société qui vend la version commerciale de Docker, et au Projet à code source ouvert Docker (lien externe à IBM), à laquelle Docker, Inc. et plusieurs autres organisations et particuliers contribuent.

Fonctionnement des conteneurs et explication de leur succès

Les conteneurs existent par les fonctionnalités d'isolement et de virtualisation des processus intégrées au noyau Linux. Ces fonctionnalités, telles que les groupes de contrôle (Cgroups) pour l'allocation de ressources entre les processus et lesespaces de nompour restreindre la visibilité d'un processus dans d'autres ressources ou zones du système, ainsi que son accès à ces dernières dernières, permettent à plusieurs composants d'application de partager les ressources d'une seule instance du système d'exploitation hôte de la même manière qu'un hyperviseur permet à plusieurs machines virtuelles (VM) de partager l'unité centrale, la mémoire et d'autres ressources d'un seul serveur matériel.

Par conséquent, la technologie de conteneur offre toutes les fonctionnalités et tous les avantages des machines virtuelles, y compris l'isolement des applications, l'évolutivité rentable et la possibilité de les éliminer. Mais elle offre aussi les avantages suivants :

  • Légèreté : contrairement aux VM, les conteneurs ne transportent pas le contenu d'une instance de système d'exploitation et d'un hyperviseur entiers ; ils ne comprennent que les processus et les dépendances du système d'exploitation nécessaires à l'exécution du code. Les conteneurs sont mesurés en mégaoctets (alors que les VM le sont en gigaoctets), ils utilisent plus efficacement la capacité matérielle et démarrent plus rapidement.
  • Plus grande efficience des ressources : avec les conteneurs, vous pouvez exécuter plusieurs fois autant de copies d'une application sur le même matériel qu'avec des VM, ce qui peut réduire les dépenses liées au nuage.
  • Amélioration de la productivité des développeurs : comparés aux Machines virtuelles, les conteneurs sont plus rapides et plus faciles à déployer, à allouer et à redémarrer, et ils constituent donc une solution idéale pour les pipelines d'intégration continue et de distribution continues (CI/CD). En outre, ils conviennent mieux aux équipes de développement qui adoptent les pratiques Agile et DevOps.

Les entreprises qui utilisent des conteneurs soulignent d'autres avantages, notamment, l'amélioration de la qualité des applications, la réactions plus rapide aux changements du marché et bien plus encore. Découvrez-en plus avec cet outil interactif :

Télécharger le rapport complet : Containers in the enterprise(PDF, 1.,4 Mo)

Pourquoi utiliser Docker ?

Docker connaît un tel succès aujourd'hui que « Docker » et « conteneurs » sont utilisés indifféremment. Mais les premières technologies liées aux conteneurs étaient disponibles depuis des années, voire des décennies (lien externe à BM), avant que Docker ne soit rendu public en 2013.

Plus particulièrement, 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 utilisant le noyau Linux sont disponibles.Ubuntu, un système d'exploitation Linux à code source ouvert, fournit également cette fonctionnalité.

Docker a amélioré les fonctionnalités de conteneurisation Linux natives avec des technologies qui permettent :

  • Meilleure portabilité et portabilité transparente : 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 ordinateur de bureau et dans n'importe quel centre de données et environnement de cloud.
  • Légèreté accrue et mises à jour plus granulaires : avec LXC, plusieurs processus peuvent être combinés dans un seul conteneur. Avec les conteneurs Docker, un seul processus peut être exécuté dans chaque conteneur. Il est ainsi possible de créer une application qui peut continuer à fonctionner pendant qu'une de ses parties est arrêtée pour une mise à jour ou une réparation.
  • Création automatique de conteneur : Docker peut générer automatiquement un conteneur basé sur le code source de l'application.
  • Gestion des versions de conteneur : Docker peut assurer le suivi des versions d'une image de conteneur, revenir aux versions précédentes et déterminer qui a créé une version et comment. Il peut même télécharger uniquement les deltas entre une version existante et une nouvelle version.
  • Réutilisation des conteneurs : les conteneurs existants peuvent être utilisés comme images de base, essentiellement comme des modèles pour la création de conteneurs.
  • Bibliothèques de conteneurs partagés : les développeurs peuvent accéder à un registre à code source ouvert contenant des milliers de conteneurs fournis par l'utilisateur.

Aujourd'hui, la conteneurisation Docker fonctionne également avec le serveur Microsoft Windows. Et la plupart des fournisseurs de cloud offrent des services spécifiques pour aider les développeurs à créer, distribuer et exécuter des applications conteneurisées avec Docker.

Toutes ces raisons expliquent pourquoi Docker a rapidement connu un succès considérable et continue de susciter un tel engouement. À l'heure où nous écrivons ces lignes, Docker Inc. fait état de 11 millions de développeurs et de 13 milliards de téléchargements d'images de conteneurs chaque mois (lien externe à IBM).

Outils et terminologie Docker

Voici quelques-uns des outils et termes que vous rencontrerez lorsque vous utiliserez Docker :

DockerFile

Chaque conteneur Docker commence par un simple fichier texte contenant des instructions sur la façon de créer l'image du conteneur Docker. DockerFile automatise le processus de création d'image Docker. Il s'agit essentiellement d'une liste d'instructions d'interface de ligne de commande (CLI) que le moteur Docker exécute pour assembler l'image.

Images Docker

Les images Docker contiennent le code source exécutable de l'application, ainsi que tous les outils, bibliothèques et dépendances dont le code de l'application a besoin pour fonctionner en tant que conteneur. Lorsque vous exécutez une image Docker, elle devient une instance (ou plusieurs instances) du conteneur.

Il est possible de créer complètement une image Docker, mais la plupart des développeurs la récupèrent dans des référentiels communs. Il est possible de créer plusieurs images à partir d'une seule image de base, qui partageront les points communs de leur pile.

Les images Docker sont constituées decouches, et chaque couche correspond à une version de l'image. Chaque fois qu'un développeur apporte des modifications à l'image, une nouvelle couche supérieure est créée, et cette couche remplace la couche supérieure précédente en tant que version actuelle de l'image. Les couches précédentes sont sauvegardées pour les restaurations 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, telles que l'ajout ou la suppression de fichiers, sont enregistrées dans la couche conteneur uniquement et n'existent que pendant l'exécution du conteneur. Ce processus itératif de création d'images permet d'accroître l'efficacité globale, car plusieurs instances de conteneur actives peuvent s'exécuter à partir d'une seule image de base, et elles exploitent donc une pile commune.

Conteneurs Docker

Les conteneurs Docker sont les instances actives en cours d'exécution des images Docker. Alors que les images Docker sont des fichiers en lecture seule, les conteneurs sont des contenus actifs, éphémères et exécutables. Les utilisateurs peuvent interagir avec eux, et les administrateurs peuvent ajuster leurs paramètres et conditions à l'aide de commandes docker.

Docker Hub

Docker Hub (lien externe à IBM) est le référentiel public d'images Docker, que Docker revendique comme la « plus grande bibliothèque et communauté d'images de conteneurs au monde ». Il contient plus de 100 000 images de conteneurs provenant de fournisseurs de logiciels commerciaux, de projets à code source ouvert et de développeurs individuels. Il comprend des images produites par Docker, Inc, des images certifiées appartenant au Docker Trusted Registry, et plusieurs 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 pour les utiliser comme point de départ pour des projets de conteneurisation.

Démon Docker

Le démon Docker est un service exécuté sur votre système d'exploitation, tel que Microsoft Windows ou Apple MacOS ou iOS. Ce service crée et gère automatiquement vos images Docker à l'aide des commandes du client, faisant office de centre de contrôle de votre implémentation Docker.

Registre Docker

Un registre Docker est un système de stockage et de distribution à code source ouvert évolutif pour les images docker. Le registre vous permet de suivre les versions des images dans les référentiels, en utilisant le balisage pour l'identification. Cela est réalisé à l'aide de git, un outil de contrôle des versions.

Déploiement et orchestration de Docker

Si vous n'utilisez que quelques conteneurs, il est assez simple de gérer votre application dans Docker Engine, l'environnement d'exécution, de facto, du secteur. Mais si votre déploiement comprend des milliers de conteneurs et des centaines de services, il est presque impossible de gérer ce flux de travail sans ces outils..

Docker Compose

Si vous créez une application à partir de processus dans plusieurs conteneurs qui résident tous sur le même hôte, vous pouvez utiliserDocker Composepour gérer l'architecture de l'application.Docker Compose crée un fichier YAML qui spécifie les services inclus dans l'application, et peut déployer et exécuter des conteneurs à l'aide d'une seule commande. Avec Docker Compose, vous pouvez également 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

Pour contrôler et gérer les cycles de vie de conteneur dans des environnements plus complexes, vous devez utiliser un outil d'orchestration de conteneur. Alors que Docker inclut son propre outil d'orchestration (appelé Docker Swarm), la plupart des développeurs choisissent Kubernetes à la place.

Kubernetes est une plateforme d'orchestration de conteneur à code source ouvert, issue d'un projet développé en interne chez Google.Kubernetes planifie et automatise les tâches qui font partie intégrante de la gestion des architectures basées sur des conteneurs, notamment le déploiement des conteneurs, les mises à jour, la reconnaissance de services, l'allocation de l'espace de stockage, l'équilibrage de charge, le contrôle de l'intégrité, etc. En outre, l'écosystème d'outils à code source ouvert pour Kubernetes, notamment, Istio et Knative, permet aux entreprises de déployer une plateforme en tant que service (PaaS) à haute productivité pour les applications conteneurisées et de passer plus rapidement à l'informatique sans serveur.

Pour des informations plus approfondies sur Kubernetes, consultez notre vidéo « Kubernetes explained » :

Kubernetes Explained (10:59)

Docker et IBM Cloud

Une plateforme de conteneurs d'entreprise permet d'orchestrer plusieurs clouds publics et privés, afin d'unifier vos environnements pour améliorer les performances commerciales et opérationnelles. Il s'agit d'un élément clé d'une stratégie de cloud hybride ouvert qui vous permet d'éviter d'être dépendant d'un seul fournisseur, de créer et d'exécuter des charges de travail n'importe où et de manière cohérente, et d'optimiser et de moderniser l'ensemble de votre informatique.

Pour aller plus loin :

  • Déployez des grappes Kubernetes hautement disponibles et entièrement gérées avec Red Hat OpenShift on IBM Cloud, un service OpenShift géré qui tire parti de l'échelle de l'entreprise et de la sécurité d'IBM Cloud pour automatiser les mises à jour, la mise à l'échelle et l'allocation.
  • Déployez et exécutez des applications dans des environnements sur site, d'edge computing et de cloud public, quel que soit le fournisseur, avec IBM Cloud Satellite, une solution de cloud réparti gérée
  • Simplifiez et consolidez vos lacs de données en déployant de manière transparente le stockage d'entreprise en conteneur dans les environnements sur site et dans le cloud public avec les solutions de stockage dans le cloud hybride IBM.
  • Simplifiez la gestion de l'informatique hybride complexe avec les services gérés IBM Cloud.

Commencez par créer un compte IBM Cloud dès aujourd'hui.