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é.
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
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.
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 :
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 :
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 :
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).
Certains outils et la terminologie que vous rencontrerez lors de l'utilisation de Docker incluent :
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.
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.
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.
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.
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.
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.
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.
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.
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é » :
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 :
Commencez dès aujourd'hui avec un compte IBM Cloud.
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 exploite OpenShift dans les environnements publics et hybrides afin d'offrir vitesse, réactivité sur le marché, évolutivité et fiabilité.
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.
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.
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.
Une nouvelle recherche IBM documente l'essor de l'adoption des conteneurs et de Kubernetes.
Les conteneurs font partie d'une stratégie cloud hybride qui permet de générer et de gérer des charges de travail de n'importe où.