Docker
Qu’est-ce que Docker ?
Basée sur la technologie open source, la plateforme Docker permet aux développeurs de créer des applications dans des conteneurs, ce qui facilite la modification et la mise à jour des applications en cours de développement.
Pourquoi les développeurs utilisent-ils Docker ?
Docker permet aux développeurs de packager et d’exécuter des applications dans un environnement virtualisé appelé conteneur. Cette isolation et cette sécurité permettent d'exécuter plusieurs conteneurs indépendamment et simultanément sur un seul système hôte. Docker fournit les outils et la plateforme permettant de gérer le cycle de vie des conteneurs.
Quels sont les avantages de Docker ?
Lancé en 2013, Docker a contribué à vulgariser l’utilisation de la conteneurisation dans le développement de logiciels. Docker facilite la création, le partage et l'exécution d'applications conteneurisées. Un nouveau conteneur peut être configuré en quelques minutes, y compris toutes les dépendances des applications. Une fois conteneurisées, les applications peuvent être exécutées partout et sur toutes les infrastructures, ce qui maximise leur portabilité.
Pourquoi les conteneurs sont-ils utiles ?
Les conteneurs sont légers, contiennent tout ce qui est nécessaire à l’exécution de l’application et rendent le logiciel indépendant de l’infrastructure hôte. Les conteneurs sont également isolés les uns des autres, ce qui rend le système global plus stable. Ils permettent de répartir les grands projets entre plusieurs équipes de développement, de manière à étaler la charge de travail et à accélérer le déploiement.
Comment fonctionne Docker ?
Docker tire parti de plusieurs caractéristiques du noyau Linux pour offrir ses fonctionnalités. Il utilise les espaces de noms pour fournir des conteneurs. Lorsque vous exécutez un conteneur, Docker crée un ensemble d'espaces de noms pour ce conteneur. Ces espaces de noms fournissent une couche d'isolation pour les conteneurs. Chaque aspect d'un conteneur s'exécute dans un espace de nom distinct, et son accès est limité à cet espace de nom.
Contrairement aux machines virtuelles (VM), qui font abstraction des ressources du système hôte au niveau du matériel, Docker le fait au niveau du système d'exploitation (SE). La virtualisation à ce niveau permet aux instances de conteneurs d'être plus légères et plus rapides que les machines virtuelles.
Pourquoi Docker ?
Docker simplifie et accélère les workflows de développement de logiciels. Il donne aux développeurs la liberté d'innover en choisissant leurs outils, leurs stacks d'applications et leurs environnements de déploiement en fonction des besoins spécifiques de chaque projet.
Grâce à la légèreté et à la rapidité de Docker, il est possible d'exécuter plus de charges de travail sur le même système hôte qu'avec des machines virtuelles basées sur un hyperviseur. Il convient aussi bien aux environnements à haute densité qu'aux déploiements de petite et moyenne envergure où vous devez accomplir davantage avec moins de ressources.
La plateforme de conteneurs de Docker permet aux charges de travail d'être très portables. Les conteneurs Docker peuvent être exécutés sur le device local d'un développeur, sur du matériel physique dans un datacenter sur site ou en colocation, sur des instances de machine virtuelle, sur une plateforme de cloud public ou dans un environnement hybride. Cette portabilité permet également de gérer facilement les charges de travail de manière dynamique, en effectuant une extension verticale ou horizontale des applications et des services en temps quasi réel, en tenant compte des besoins de l’entreprise.
Avec Docker, les développeurs peuvent mettre en place des environnements locaux correspondant à ceux des serveurs réels et exécuter plusieurs environnements de développement avec des configurations différentes. Le test logiciel peut être effectué rapidement pour vérifier si les nouvelles modifications fonctionneront correctement dans une série d'environnements et de conditions, ce qui permet d'atteindre les objectifs d'amélioration et de développement continus (CI/CD).
Docker permet également de répartir les gros projets de développement entre plusieurs petites équipes Agile, de manière à répartir la charge de travail et à accélérer le déploiement. Des workflows DevOps aussi efficaces peuvent aider les sociétés à déployer des logiciels beaucoup plus fréquemment, à se remettre des erreurs plus rapidement et à constater une baisse considérable du taux d'échec des modifications.
Comment Docker est-il déployé et orchestré ?
Les utilisateurs interagissent avec Docker par le biais d'un client. Ce client communique avec un processus en arrière-plan appelé démon Docker, qui gère les conteneurs sur l’hôte. Le démon suit tout ce qui concerne l'environnement Docker.
Au cœur du système, le moteur Docker est une application installée sur une machine hôte qui utilise une architecture client-serveur. L'hôte fournit l'environnement pour exécuter et faire fonctionner les applications. Il abrite le démon Docker ainsi que les objets Docker suivants :
- Les images sont des modèles binaires en lecture seule utilisés pour créer des conteneurs. Leurs métadonnées décrivent les fonctionnalités et les besoins du conteneur. Une image peut être utilisée seule pour créer un conteneur, ou personnalisée pour ajouter de nouveaux éléments et étendre la configuration actuelle. Les images de conteneurs peuvent être partagées au sein d'une organisation ou avec le public, et permettent la collaboration entre les développeurs.
- Les conteneurs sont définis par leur image et toute option de configuration supplémentaire fournie au démarrage (par exemple, la connectivité réseau et les options de stockage). Les conteneurs n'ont accès qu'aux ressources définies dans l'image, sauf si un accès supplémentaire est défini lors de la constitution de l'image en conteneur.
- Les réseaux permettent aux conteneurs isolés d'un système de communiquer entre eux.
- Le stockage des données dans un conteneur est non persistant par défaut et cesse dès que le conteneur ne fonctionne plus. Toutefois, Docker propose des options, telles que les volumes de données et les plugins de stockage, qui permettent de transférer ou de stocker des données de manière persistante.
Le client et le démon Docker peuvent fonctionner sur le même système, ou un client Docker peut être connecté à un démon Docker distant. Un client Docker peut également communiquer avec plus d'un démon Docker. Le client et le démon Docker communiquent à l'aide d'une API REST, via des sockets UNIX ou une interface réseau.
Comment utiliser Docker ?
Parce qu’il simplifie et accélère les workflows, Docker offre de nombreux avantages aux équipes de développement de logiciels. Toutefois, il existe certains scénarios pour lesquels il est particulièrement avantageux.
Adopter une architecture de microservices
De nombreuses organisations souhaitent remplacer leurs applications monolithiques héritées dans le cadre de leur transformation digitale. Alors qu'une application monolithique fonctionne comme une seule unité, une architecture de microservices se décompose en un ensemble de petites unités indépendantes. Docker permet la conteneurisation de ces microservices et simplifie leur prestation et leur gestion. La conteneurisation fournit à chaque microservice son propre environnement de travail isolé, ce qui le rend déployable et évolutif de manière indépendante.
Transférer les applications héritées vers des conteneurs
Pour les applications qui ne peuvent pas être réarchitecturées en microservices, il est possible de les transférer telles quelles dans des conteneurs. L’utilisation de Docker pour conteneuriser ces applications rend le développement et les tests plus efficaces, simplifie le déploiement et la reprise après sinistre, et permet l’exécution de plusieurs instances de l’application héritée sans créer de conflit avec les applications plus récentes.
Déploiement du machine learning (ML)
Le déploiement de modèles entraînés en production et à grande échelle est l’un des principaux défis liés au développement du machine learning. Docker simplifie à la fois le développement et le déploiement d'applications de ML en s'appuyant sur des plateformes telles que TensorFlow pour permettre la prise en charge des GPU. Il est également possible de rationaliser la distribution des applications ML en déployant des conteneurs sur plusieurs machines ou dans le cloud et en les gérant l’ensemble de ces conteneurs à l’aide de la technologie d’orchestration.
Consolidation de serveurs
Comme pour les machines virtuelles, les fonctionnalités d’isolation des applications de Docker permettent aux entreprises de réduire leurs coûts en consolidant plusieurs serveurs. En éliminant les surcoûts liés à l’exécution de plusieurs systèmes d’exploitation (imposée par les environnements de machines virtuelles), Docker permet de consolider les serveurs de manière plus dense que ne le permettent les VM.
Solutions HPE avec Docker
Docker Entreprise Edition de HPE est un bundle commercialisé par abonnement mettant à disposition tous les composants nécessaires pour l’implémentation des conteneurs dans un environnement. La version Basic Edition de Docker comprend le moteur de conteneurs et l'orchestration. La version Standard Edition comporte en outre plusieurs couches de gestion des images et des accès, tandis que la version Advanced Edition permet de rajouter des fonctions de sécurisation et de surveillance des vulnérabilités.
Appréciez la simplicité et la résilience de HPE Storage en commençant par provisionner des volumes persistants en quelques commandes seulement. Les baies 100 % flash ou flash hybrides et les baies flash secondaires HPE Nimble Storage et HPE 3PAR assurent des performances et une évolutivité à votre échelle dans les environnements de conteneurs.
HPE Ezmeral Runtime est une plateforme de conteneurs d’applications unifiée basée sur la plateforme open source Kubernetes. Elle est conçue pour les applications cloud native ou non cloud native s’exécutant sur tout type d’infrastructure : sur site, dans plusieurs clouds publics, au sein d’un modèle hybride ou encore dans l’edge.
Cette plateforme peut être déployée as-a-service avec HPE GreenLake dans un modèle de paiement à l'utilisation. Les ingénieurs HPE se chargent de l’installation et de la configuration. HPE assure la gestion complète de votre solution via un point de contact unique pour l’assistance technique et une équipe technique qui connaît votre environnement et votre entreprise. Grâce à une construction matérielle et logicielle standardisée, vous évitez un déploiement manuel coûteux, et le système peut être déployé dans votre datacenter en moins de 15 jours.