Accueil les sujets Qu'est-ce que Docker ? Qu’est-ce que Docker ?
Construire sur docker dans OpenShift S’abonner aux mises à jour sur le cloud
Illustration avec collage de pictogrammes représentant un écran d’ordinateur, un serveur, des nuages et des points
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, 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 nécessaires à l'exécution de ce code dans n'importe quel environnement.

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 hybrides. 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 rend la conteneurisation plus rapide, plus facile et plus sûre. À l’heure où nous écrivons ces lignes, Docker dénombre plus de 13 millions de développeurs utilisant la plateforme (lien externe à ibm.com).

Docker fait également référence à Docker, Inc. (lien externe à ibm.com), la société qui vend la version commerciale de Docker. Il est également lié au projet open source Docker auquel Docker, Inc. et de nombreuses autres organisations et personnes contribuent.

IA générative et valeur du cloud hybride

Découvrez comment les organisations peuvent accroître l'impact de l'IA en tirant parti du cloud hybride pour obtenir des résultats commerciaux.

Contenu connexe

Obtenir le guide sur le cloud hybride

Comment fonctionnent les conteneurs et pourquoi ils sont si populaires

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 (Cgroups)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.

Ils permettent à plusieurs composants d'application de partager les ressources d'une instance unique du système d'exploitation hôte. Cette mutualisation des ressources est très similaire à la façon dont un hyperviseur permet à plusieurs Virtual Machines (VM) de partager le processeur, la mémoire et d'autres ressources d'un seul serveur matériel. 

Par conséquent, la technologie des conteneurs offre toutes les fonctionnalités et les avantages des machines virtuelles, y compris l’isolation des applications, l’évolutivité et la disponibilité à moindre coût, ainsi que des avantages supplémentaires 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 ne comprennent que 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. 

  • Amélioration de la productivité des développeurs : 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 machines virtuelles. Cet avantage en fait la solution idéale pour les pipelines d’intégration continue et de distribution continue (CI/CD), et convient mieux aux équipes de développement adoptant des pratiques agiles et DevOps .

  • Une plus grande efficacité des ressources : 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 d’autres avantages, notamment une meilleure qualité des applications, une réponse plus rapide aux changements du marché et bien plus d'autres encore. En savoir plus avec cet outil interactif : 

Télécharger le rapport complet : Containers in the enterprise (Les conteneurs dans l’entreprise)
Pourquoi utiliser Docker ?

Docker est tellement populaire aujourd'hui que les termes « 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, voire des décennies (lien externe à ibm.com), avant que Docker ne soit rendu public en 2013. 

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 moderne et open source, offre également cette possibilité. 

Docker permet aux développeurs d'accéder à ces capacités de conteneurisation natives à l'aide de commandes simples et de les automatiser grâce à une interface de programmation des applications (API) qui permet d'économiser du travail. Par rapport à LXC, Docker offre :

  • Portabilité améliorée et transparente 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 et de cloud. 
  • Un poids encore plus léger et des mises à jour plus granulaires : avec LXC, plusieurs processus peuvent être combinés 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 automatisée de conteneurs : Docker peut construire automatiquement un conteneur sur la base du code source de l'application. 

     

  • Gestion des versions du 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. Il peut même télécharger uniquement les deltas entre une version existante et une nouvelle. 

     

  • 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 nouveaux conteneurs. 

     

  • Bibliothèques de conteneurs partagées : les développeurs peuvent accéder à un registre open source contenant des milliers de conteneurs créés par les utilisateurs. 

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

Outils et termes Docker

Voici quelques-uns des outils, termes et technologies rencontrés par les développeurs lorsqu’ils utilisent 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'images Docker. Il s’agit essentiellement d’une liste d’instructions d’interface de ligne de commande (CLI) que Docker Engine exécutera 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, quel que soit le contenu, l’infrastructure ou les autres variables d’environnement. 

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 s’exécuter en tant que conteneur. Lorsque vous exécutez l'image Docker, elle devient une instance (ou plusieurs instances) du conteneur. 

Il est possible de créer une image Docker à partir de zéro, mais la plupart des développeurs les extraient de référentiels courants. Plusieurs images Docker peuvent être créées à partir d'une seule image de base et elles partageront les points communs de leur pile. 

Les images Docker sont composées de couches 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 supérieure 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, telles que l’ajout ou la suppression de fichiers, sont enregistrées dans la couche de conteneur et 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 et, ce faisant, tirer parti d'une pile commune. 

Conteneurs Docker

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

Hub Docker

Docker Hub (lien externe à ibm.com) est le référentiel public d'images Docker qui se présente comme « la plus grande bibliothèque et communauté au monde pour les images de conteneurs ». Il contient plus de 100 000 images de conteneurs provenant de fournisseurs de logiciels commerciaux, de projets open source et de développeurs individuels. Elle 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 pour les utiliser comme point de départ de tout projet de conteneurisation. 

Il existe également d'autres dépôts ou banques d'images, notamment GitHub. 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 (repo) qui peut contenir plusieurs images. Le dépôt peut être public ou privé et peut être lié à des comptes GitHub ou BitBucket. 

Docker Desktop

Docker Desktop (lien externe à ibm.com) est une application pour Mac ou Windows qui inclut Docker Engine, Docker CLI client, Docker Compose, Kubernetes et d'autres. Il inclut également l’accès à Docker Hub. 

Démon Docker

Le démon Docker est un service qui crée et gère des images Docker à l'aide des commandes du client. En d'autres termes, le démon Docker agit comme le centre de contrôle de votre installation Docker. Le serveur sur lequel s'exécute le démon Docker s'appelle l'hôte Docker.

Registre Docker

Un registre Docker est un système de stockage et de distribution open source évolutif pour les images Docker. Le registre vous permet de suivre les versions des images dans les dépôts, en utilisant le balisage pour l'identification. Ce suivi et cette identification sont réalisés à l'aide de Git, un outil de contrôle de version. 

Déploiement et orchestration de Docker

Lorsqu'on n'utilise que quelques conteneurs, il est assez simple de gérer une application dans Docker Engine, le moteur d'exécution de facto du secteur. Mais pour les déploiements comprenant des milliers de conteneurs et des centaines de services, il est pratiquement impossible de gérer le workflow sans l'aide d'outils spécifiques.

Plug-ins Docker

Les plug-ins Docker (lien externe à ibm.com) peuvent être utilisés pour rendre Docker encore plus fonctionnel. Plusieurs plug-ins Docker sont inclus dans le système de plug-ins Docker Engine et des plug-ins tiers peuvent également être chargés. 

docker compose

Les développeurs peuvent utiliser Docker Compose pour gérer des applications multi-conteneurs, 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

Le contrôle et la gestion des cycles de vie des conteneurs dans des environnements plus complexes nécessitent un outil d’ orchestration de conteneurs . Bien que Docker inclue son propre outil d’orchestration (appelé Docker Swarm), la plupart des développeurs choisissent plutôt Kubernetes. 

Kubernetes est une plateforme open source d’orchestration de conteneurs issue d’un projet développé pour un usage interne chez Google. Kubernetes planifie et automatise les tâches intégrées à la gestion des architectures basées sur les 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'intégrité, etc.

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

En savoir plus sur Kubernetes

Solutions connexes
Red Hat OpenShift on IBM Cloud

Découvrez comment Red Hat OpenShift on IBM Cloud exploite Red Hat OpenShift dans des environnements publics et hybrides pour garantir vitesse, évolutivité, fiabilité et réactivité vis-à-vis du marché.

Découvrir Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite 

Tirez parti d’IBM Cloud Satellite pour démarrer des services cloud cohérents où vous le souhaitez : sur site, en périphérie (edge) et dans des environnements de cloud public.

Découvrir IBM Cloud Satellite
Solutions de stockage dans le cloud hybride

Stockez les données là où elles sont le plus utiles pour les applications et les services grâce aux solutions de stockage en cloud hybride d’IBM, sur site ainsi que dans le cloud privé et public.

Découvrir les solutions de stockage dans le cloud hybride
Services cloud

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

Découvrir les services cloud
Ressources Containers in the enterprise (Les conteneurs dans l’entreprise)

Lisez la nouvelle étude IBM Research sur l’essor fulgurant des conteneurs et de Kubernetes.

Servir des modèles sur Kubernetes ou OpenShift en utilisant des conteneurs autonomes

Créez une image de conteneur autonome pour servir les modèles IBM Watson NLP, puis exécutez-la sur un cluster Kubernetes ou Red Hat OpenShift.

Passer à l’étape suivante

Red Hat OpenShift sur IBM Cloud offre aux développeurs un moyen rapide et sécurisé de conteneuriser et de déployer des charges de travail d’entreprise au sein de clusters Kubernetes. Fini les tâches fastidieuses et répétitives liées à la gestion de la sécurité, de la conformité, du déploiement et du cycle de vie en cours. 

Découvrir Red Hat OpenShift on IBM Cloud Commencer gratuitement