Docker
cloud leadspace
Docker

Docker est une plateforme à code source ouvert qui sert à construire, déployer et gérer des applications conteneurisées. Découvrez les conteneurs, comparez-les aux machines virtuelles et apprenez pourquoi Docker est si largement adopté et utilisé.

Produits à la une

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


Qu'est-ce que Docker ?

Docker est une plateforme de conteneurisation à code source ouvert. Elle permet aux développeurs de combiner des applications dans des conteneurs—des composants exécutables standardisés combinant le code source de l'application avec les bibliothèques et les dépendances des systèmes d'exploitation requise pour exploiter ce code dans n'importe quel environnement. Les conteneurs simplifient la déliverabilité des applications distribuées, et deviennent de plus en plus populaires au fur et à mesure que les organisations glissent vers le développement cloud natif développement et les environnements multicloud hybrides.

Les développeurs peuvent créer des conteneurs sans Docker, mais la plateforme facilite et simplifie la génération, le déploiement et la gestion des conteneurs. Docker est essentiellement un kit d'outils qui permet aux développeurs de générer, déployer, exploiter, mettre à jour et arrêter les conteneurs en utilisant des commandes simples et une automatisation de sauvegarde du travail à travers une  interface de programme d'application 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), auquel Docker, Inc. et de nombreuses autres organisations et individus contribuent.


Comment fonctionnent les conteneurs, et pourquoi ils sont si populaires

Les conteneurs sont rendus possibles par des capacités d'isolement et de virtualisation des processus construits dans le noyau Linux. Ces capacités - comme les groupes de contrôle (Cgroups) pour l'allocation des ressources entre les processus, et les espaces de noms pour restreindre l'accès ou la visibilité un processus dans d'autres ressources ou zones du système - permettent à de nombreux composants d'applications de partager les ressources d'un exemplaire unique du  système d'exploitation hôte de la même manière qu'un hyperviseur permet à de multiples machines virtuelles (VM) de partager l' unité centrale, la mémoire et d'autres ressources d'un serveur matériel unique. 

En conséquence, la technologie de conteneur offre toutes les fonctionnalité et tous les avantages des VM  - y compris l'isolement d'application, une extensibilité abordable, et le caractère jetable - plus d'importants avantages supplémentaires :

  • Un poids plus léger : contrairement aux machines virtuelles, les conteneurs ne portent pas le contenu d'un exemplaire complet de système d'exploitation et d'hyperviseur ; ils n'incluent que les processus de système d'exploitation et les dépendances  nécessaires pour exécuter le code. La taille des conteneurs est mesurée en mégaoctets (contre les gigaoctets pour certaines VM), font un meilleur usage de la capacité matérielle, et affichent des temps de démarrage plus rapides.
  • Une plus grande efficience ressource : avec les conteneurs, vous pouvez lancer plusieurs fois autant d'exemplaires d'une application sur le même matériel que vous pouvez le faire avec les VM. Cela peut réduire vos dépenses en matière de cloud.
  • Amélioration de la productivité du développeur : par rapport aux  VM, les conteneurs sont plus rapides et plus faciles à déployer, à mettre à disposition et à redémarrer. Cela les rend idéaux pour une utilisation dans une intégration continue et des pipelines de prestation de services en continu (intervalle de contrôle / distribution continue), ainsi qu'un meilleure ajustement pour les équipes de développement qui adoptent les pratiques Agile et DevOps .

Les entreprises qui utilisent des conteneurs rapportent d'autres avantages, notamment une meilleure qualité application, un temps de réponse plus rapide face aux modifications du marché et bien plus. Apprenez plus avec cet outil interactif :

Télécharger le rapport complet : Les conteneurs dans l'entreprise (PDF, 1,4 Mo)

Pourquoi utiliser Docker ?

Docker est si populaire aujourd'hui que « Docker » et « conteneurs » sont utilisés de manière interchangeable. Mais les premières technologies liées aux conteneurs étaient disponibles depuis des années — même des décennies (lien externe à IBM) - avant que Docker ne soit rendu public en 2013. 

Plus particulièrement, en 2008, Les conteneurs LinuXC (LXC) ont été mis en œuvre dans le noyau Linux, permettant la virtualisation complète pour un exemplaire unique de Linux. Tandis que LXC est encore utilisé aujourd'hui, les nouvelles technologies utilisant le noyaux Linux  sont disponibles. Ubuntu, un système d'exploitation Linux à code source ouvert, fournit également cette fonctionnalité.

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

  • Une portabilité améliorée et fluide : tandis que les conteneurs LXC référencent souvent des configurations spécifiques à la machine, les conteneurs Docker fonctionnent sans modification sur n'importe quel bureau électronique, centre de données et environnement cloud.
  • Un poids encore plus léger et des mises à jour plus granulaires : Avec  LXC, de multiples processus peuvent être combinés au sein d'un conteneur unique. Avec les conteneurs Docker, un seul processus peut fonctionner dans chaque conteneur. Cela permet de générer une application qui peut poursuivre son fonctionnement pendant qu'une de ses parties est occupée avec une mise à jour ou une réparation.
  • Création de conteneur automatisée :  Docker peut générer automatiquement un conteneur en fonction du code source de l'application.
  • Gestion des versions des conteneurs : Docker peut suivre les versions d'une image de conteneur, revenir aux versions précédentes, et tracer qui a construit une version et comment. Il peut même envoyer par téléchargement seulement 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 construire de nouveaux conteneurs.
  • Bibliothèques de conteneurs partagées : les développeurs peuvent accéder à un registre à code source ouvert contenant des milliers de conteneurs fournis par les utilisateurs.

Aujourd'hui la conteneurisation Docker fonctionne également avec un serveur Windows de Microsoft. Et la plupart des fournisseurs de cloud  proposent des services spécifiques aux développeurs pour les aider à générer, expédier et faire fonctionner des applications conteneurisées avec Docker. 

Pour ces raisons, l'adoption de Docker a rapidement explosé et continue à augmenter. Au moment d'écrire ces lignes, Docker Inc. rapporte 11 millions de développeurs et 13 milliards de téléchargements d'images de conteneurs tous les mois (lien externe à IBM).


Termes ou outils Docker

Termes ou outils Docker

Certains outils et la terminologie que vous rencontrerez lors de l'utilisation de Docker incluent :

DockerFile

Tout conteneur Docker commence par un simple fichier texte contenant des instructions sur la façon de générer  l'image du conteneur Docker. Le DockerFile automatise le processus de création de l'image Docker. C'est essentiellement une liste d'instructions d'interface de ligne de commande (CLI) que le moteur Docker va lancer afin d'assembler l'image.

Images Docker

Les images Docker contiennent le code source de l'application exécutable 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 lancez l'image Docker, elle devient un exemplaire (ou des exemplaires mutliples) du conteneur.

Il est possible de générer une image Docker  à partir de rien, mais la plupart des développeurs les extraient de fonds communs. Il est possible de créer plusieurs images Docker à partir d'une image de base unique, et elles partageront les points communs de leur pile.

Les images Docker sont constituées de couches, et chaque couche correspond à une version de l'image. Chaque fois qu'un promoteur apporte des modifications à l'image, une nouvelle couche supérieure est créée, et cette couche supérieure remplace la précédente couche supérieure en tant que version actuelle de l'image. Les couches précédentes sont enregistrées pour les rollbacks 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'image permet d'augmenter l'efficience globale car de multiples instances de conteneurs de production peuvent fonctionner à partir d'une unique image, et quand cela se produit, elles optimiser une pile commune.

Conteneurs Docker

Les conteneurs Docker sont les exemplaires de production et d'exécution des images Docker. Alors que les images Docker sont des fichiers en lecture seule, les conteneurs sont du contenu de production éphémère et exécutable. Les utilisateurs peuvent interagir avec eux et les administrateurs peuvent régler leurs paramètres et conditions à l'aide des  commandes Docker.

Concentrateur Docker

Le concentrateur Docker (lien externe à IBM) est le référentiel public d' images Docker auto-nommée la « plus grande bibliothèque et communauté pour images de conteneurs du monde. » Il détient plus de 100 000 images de conteneurs provenant d'éditeurs de logiciels commerciaux, de projets à code source ouvert et de développeurs individuels. Il comprend des images qui ont été produites par Docker, Inc., des images certifiées appartenant au Docker Trusted Registry et plusieurs milliers d'autre images.

Tous les utilisateurs du concentrateur Docker peuvent partager leurs images à volonté. Ils peuvent également téléchargerbase des images de base prédéfinies depuis le système de fichiers Docker afin de les utiliser comme point de départ pour tout projet de  conteneurisation.

Daemon Docker

Docker daemon est un service exécuté sur votre système d'exploitation, comme Windows de Microsoft, ou iOS ou MacOS d'Apple. Ce service crée et gère vos images Docker pour vous à l'aide des commandes du client, agissant en tant que centre de contrôle de votre mise en œuvre Docker.

Registre Docker

Un registre Docker est un système archivage et de distribution à code ouvert évolutif pour les images Docker. Le registre vous permet de suivre les versions d'images dans les référentiels, en utilisant le marquage pour les identifier. Cela se fait en utilisant git, un outil de contrôle des versions.


Déploiement et orchestration de Docker

Si vous ne gérez que quelques conteneurs, il est assez simple de gérer votre application dans Docker Engine, l'application d'exécution 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 l'aide de ces outils dédiés.

Docker Compose


Si vous construisez une application en dehors des processus dans de multiples conteneurs qui résident tous sur le même hôte, vous pouvez utiliser Docker Compose pour gérer l'architecture de l'application. Docker Compose crée un fichier YAML qui spécifie les services qui sont inclus dans l'application et peuvent déployer et lancer les conteneurs avec une commande unique. À l'aide de Docker Compose, vous pouvez également définir des volumes permanents pour l'archivage, indiquer des nœuds de base, et documenter et configurer les dépendances de service.

Kubernetes


Pour surveiller et gérer les cycles de vie des conteneurs dans des environnements plus complexes, vous aurez besoin de vous tourner vers un outils d'orchestration de conteneur. Alors que Docker inclut son propre outil d'orchestration (appelé Docker Swarm), la plupart des développeurs choisissent plutôt Kubernetes .

Kubernetes est une plateforme  d'orchestration de conteneurs à code source ouvert issue d'un projet développé pour utilisation interne chez Google. Kubernetes planifie et automatise les tâches qui font partie intégrante de la gestion des architectures basées sur les conteneurs, dont le déploiement de conteneurs, les mises à jour, la reconnaissance de service, l'allocation d'espace de stockage, l'équilibrage de charge, le suivi de la santé, et plus encore. De plus, l'écosystème à code source ouvert d'outils pour Kubernetes, y compris Istio et Knative—permet aux organisations de déployer une productivité élevée de type plateforme sous forme de services (PaaS) pour les applications conteneurisées et une rampe d'accès plus rapide pour l'informatique sans serveur.

Pour une plongée plus profonde dans Kubernetes, voir la vidéo « Kubernetes  expliqué » : 


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 de dépendre d'un fournisseur, de créer et d'exécuter des charges de travail n'importe où de manière cohérente, ainsi que d'optimiser et de moderniser l'ensemble de votre informatique.

Pour aller plus loin :

  • Déployez des grappes Kubernetes à haute disponibilité et entièrement gérés avec Red Hat OpenShift on IBM Cloud, un service OpenShift géré qui tire parti de l'envergure et de la sécurité d'IBM Cloud pour automatiser les mises à jour, la mise à l'échelle et la mise à disposition.
  • Déployez et exécutez des applications dans des environnements sur site, d'edge computing et de cloud public, quel que soit le fournisseur, grâce à IBM Cloud Satellite, une solution gérée de cloud distribué.
  • 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 IBM de stockage dans le cloud hybride.
  • Simplifiez la gestion complexe de l'informatique hybride grâce aux services gérés IBM Cloud.

Commencez dès aujourd'hui avec un compte IBM Cloud.


Solutions connexes

Cloud hybride

Une stratégie de cloud hybride ouverte qui permet de générer et de gérer des charges de travail depuis n'importe où, sans enfermement propriétaire.


Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud exploite OpenShift dans les environnements publics et hybrides afin d'offrir vitesse, réactivité sur le marché, évolutivité et fiabilité.


IBM Cloud Satellite

Avec IBM Cloud Satellite, vous pouvez lancer des services cloud cohérents n'importe où – dans des environnements sur site, de périphérie et de cloud public.


Solutions de stockage dans le cloud hybride

Stockez les données dans un emplacement le plus pertinent possible pour les applications et les services, avec les solutions de stockage dans le cloud hybride IBM sur site, dans un cloud privé et public.


Services cloud

Découvrez comment une approche de services cloud gérés permet d'atténuer les tensions potentielles entre la gestion informatique traditionnelle et la culture DevOps.