GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Qu'est-ce que Docker ?

Présentation

Docker est l'une des plates-formes basées sur des conteneurs les plus populaires, attirant l'attention de nombreuses équipes de développement. De plus en plus d'entreprises optent pour Docker en raison de sa fiabilité, de ses performances et de ses fonctionnalités.

Par conséquent, il est essentiel de comprendre ce logiciel de conteneurisation open source et les composants sous-jacents qui l'alimentent.

Dans cet article, vous apprendrez ce qu'est Docker, quels sont les composants les plus importants de Docker et les avantages et les inconvénients de l'utilisation de la plate-forme.

Qu'est-ce que Docker ?

Docker est une plate-forme de conteneurisation open source utilisée pour développer, déployer et gérer des applications dans des environnements virtualisés légers appelés conteneurs.

Il est principalement utilisé comme plate-forme de développement logiciel pour développer des applications distribuées qui fonctionnent efficacement dans différents environnements. En rendant le système logiciel agnostique, les développeurs n'ont pas à se soucier des problèmes de compatibilité. Le conditionnement d'applications dans des environnements isolés (conteneurs) facilite également le développement, le déploiement, la maintenance et l'utilisation d'applications.

Étant donné que Docker utilise la virtualisation pour créer des conteneurs pour stocker des applications, le concept peut sembler similaire aux machines virtuelles. Bien que les deux représentent des environnements virtuels isolés utilisés pour le développement de logiciels, il existe des différences importantes entre les conteneurs et les machines virtuelles. La distinction la plus cruciale est que les conteneurs Docker sont plus légers, plus rapides et plus économes en ressources que les machines virtuelles.

L'installation de Docker est simple. Pour obtenir des instructions détaillées, consultez :

Comment installer Docker sur UbuntuComment installer Docker sur CentOSComment installer Docker sur Debian

Que sont les conteneurs ?

Les conteneurs Docker sont des environnements d'exécution virtualisés légers pour l'exécution d'applications. Chaque conteneur représente un package de logiciels contenant du code, des outils système, un environnement d'exécution, des bibliothèques, des dépendances et des fichiers de configuration nécessaires à l'exécution d'une application spécifique. Ils sont indépendants et isolés de l'hôte et des autres instances exécutées sur l'hôte.

Les conteneurs sont basés sur des images Docker. Vous créez un conteneur en exécutant une image sur le moteur Docker. Comme il s'agit des termes Docker les plus courants, assurez-vous de bien comprendre la différence entre les images Docker et les conteneurs Docker.

Le même matériel peut héberger plusieurs conteneurs. Contrairement aux machines virtuelles, les conteneurs se virtualisent au niveau de l'application. Par conséquent, ils partagent le noyau du système d'exploitation avec l'hôte et virtualisent un système d'exploitation par-dessus. Cela signifie que vous utilisez moins de ressources et que vous maintenez des environnements virtuels légers, faciles et rapides à configurer.

En plus d'être indépendants du système, les conteneurs sont rapides et faciles à démarrer, configurer, ajouter, arrêter et supprimer. Les développeurs peuvent travailler sur la même application dans différents environnements en sachant que cela n'affectera pas ses performances. De plus, ils peuvent partager des données entre conteneurs en utilisant des volumes de données.

Pour optimiser les performances des conteneurs, assurez-vous de mettre en œuvre les bonnes pratiques des conteneurs Docker.

À quoi sert Docker ?

Docker est utilisé pour :

  • Exécuter plusieurs charges de travail avec moins de ressources
  • Isolation et ségrégation des applications.
  • Standardiser les environnements pour garantir la cohérence entre les cycles de développement et de publication
  • Rationalisation du cycle de développement et prise en charge des workflows CI/CD
  • Développer des charges de travail hautement portables pouvant s'exécuter sur des plates-formes multicloud

De plus, il est utilisé comme :

  • Une alternative économique aux machines virtuelles.
  • Un système de contrôle de version pour une application.

Une brève histoire de Docker

Docker a été présenté en tant que projet open source en mars 2013 chez PyCon. Avant de se concentrer sur les conteneurs, le projet a commencé en 2008 en tant que solution de plate-forme en tant que service appelée DotCloud. Cependant, de nombreux développeurs ont montré un grand intérêt spécifiquement pour la technologie sous-jacente de DotCloud - les conteneurs logiciels.

Depuis lors, Docker a attiré l'attention de nombreux fournisseurs de technologie et entreprises de premier plan.

Composants Docker Core

L'outil se compose de plusieurs composants, chacun jouant un rôle important dans la plate-forme.

Moteur Docker

Le Docker Engine (DE) est installé sur la machine hôte et représente le cœur du système Docker. Il s'agit d'un système d'exécution léger et de la technologie client-serveur sous-jacente qui crée et gère les conteneurs.

Docker Engine se compose de trois composants :

  • Serveur - le démon Docker (dockerd), qui est responsable de la création et de la gestion des conteneurs.
  • API REST - établit la communication entre les programmes et Docker et indique à dockerd quoi faire.
  • Interface de ligne de commande (CLI) - utilisé pour exécuter les commandes Docker.

Images Docker

Les images Docker sont des modèles utilisés pour créer des conteneurs. Comme les instantanés pour les machines virtuelles, les images Docker sont des fichiers immuables en lecture seule qui se composent du code source, des bibliothèques, des dépendances, des outils et de tout autre fichier nécessaire à l'exécution d'une application. Chaque image est créée à partir d'un Dockerfile, qui contient des instructions spécifiques pour créer une image Docker particulière.

Une fois que vous maîtrisez la création d'images Docker à partir de Dockerfiles, vous pouvez créer des images et des conteneurs personnalisés plus simplement et plus rapidement.

En plus d'accélérer les builds Docker, les images sont également utiles pour augmenter la réutilisabilité et essentiellement réduire l'utilisation du disque. Étant donné que vous souhaitez que vos conteneurs restent légers et rapides, il est essentiel de conserver de petites images. Utiliser une base d'image plus légère, éviter les calques inutiles et utiliser le fichier .dockerignore ne sont que quelques façons de garder vos images Docker petites.

Fichier Docker

Un Dockerfile est un script qui consiste en un ensemble d'instructions sur la façon de créer une image Docker. Ces instructions incluent la spécification du système d'exploitation, des langues, des variables d'environnement, des emplacements de fichiers, des ports réseau et d'autres composants nécessaires pour exécuter l'image. Toutes les commandes du fichier sont regroupées et exécutées automatiquement.

Une image comporte plusieurs calques. Une fois que vous avez exécuté une image Docker pour créer un conteneur, une nouvelle couche de lecture-écriture est ajoutée. C'est ce qu'on appelle parfois la couche conteneur. La couche supplémentaire vous permet d'apporter des modifications à l'image de base, que vous pouvez valider pour créer une nouvelle image Docker pour une utilisation future.

Centre Docker

Docker Hub est le plus grand référentiel cloud d'images de conteneurs fourni par Docker. Il fournit plus de 100 000 images disponibles à l'utilisation créées par des projets open source, des éditeurs de logiciels et la communauté Docker.

La plate-forme vous permet d'expédier rapidement vos applications n'importe où, de collaborer avec des collègues et d'automatiser les builds pour une intégration plus rapide à un pipeline de développement.

Comme GitHub, les développeurs envoient et extraient des images de conteneur depuis Docker Hub et décident de les garder publiques ou privées.

Volumes Docker

Au lieu d'ajouter de nouvelles couches à une image, une meilleure solution pour conserver les données produites par un conteneur en cours d'exécution consiste à utiliser des volumes Docker. Cet outil utile permet aux utilisateurs de sauvegarder des données, de les partager entre conteneurs et de les monter sur de nouveaux. Les volumes Docker sont indépendants du cycle de vie du conteneur car ils sont stockés sur l'hôte.

Il existe différentes manières de créer et de monter un volume Docker lors du lancement d'un conteneur. Pour en savoir plus, consultez Docker Volumes :comment créer et démarrer.

Docker Compose

Lors de l'exécution et de la gestion simultanée de plusieurs conteneurs, Docker Compose est un outil utile conçu pour simplifier le processus. Il enchaîne plusieurs conteneurs nécessaires pour fonctionner ensemble et les contrôle via une seule commande coordonnée.

Docker Compose est utilisé pour lancer, exécuter, communiquer et fermer des conteneurs avec une commande. Cela se fait à l'aide d'un fichier YAML qui configure les services de l'application.

Installer Docker Compose sur CentOSInstaller Docker Compose sur Ubuntu

Bureau Docker

Docker Desktop, anciennement connu sous le nom de Docker pour Windows et Docker pour Mac, est une application qui vous permet de commencer à créer et à exécuter des conteneurs sur Windows et Mac en quelques minutes. C'est un moyen simple d'installer et de configurer l'ensemble de l'environnement de développement Docker. Il comprend Docker Engine, Docker Compose, le client Docker CLI, Docker Content Trust, Kubernetes et Credential Helper.

L'outil est utilisé pour créer et partager des applications conteneurisées et des microservices dans plusieurs langages et frameworks, sur n'importe quelle plate-forme cloud.

Pour en savoir plus, consultez la documentation officielle de Docker sur Docker Desktop.

Avantages Docker

  • Cohérence . Docker garantit la fiabilité que votre application s'exécute de la même manière dans plusieurs environnements. Les développeurs travaillant sur des machines et des systèmes d'exploitation différents peuvent travailler ensemble sur la même application sans problèmes d'environnement.
  • Automatisation . La plate-forme vous permet d'automatiser les tâches fastidieuses et répétitives et de planifier des tâches sans intervention manuelle.
  • Déploiements plus rapides . Étant donné que les conteneurs virtualisent le système d'exploitation, il n'y a pas de temps de démarrage lors du démarrage des instances de conteneurs. Par conséquent, vous pouvez effectuer des déploiements en quelques secondes. De plus, vous pouvez partager des conteneurs existants pour créer de nouvelles applications.
  • Prise en charge de CI/CD . Docker fonctionne bien avec les pratiques CI/CD car il accélère les déploiements, simplifie les mises à jour et permet aux coéquipiers de travailler efficacement ensemble.
  • Rollbacks et contrôle de la version des images . Un conteneur est basé sur une image Docker qui peut avoir plusieurs couches, chacune représentant les modifications et les mises à jour sur la base. Non seulement cette fonctionnalité accélère le processus de construction, mais elle fournit également un contrôle de version sur le conteneur. Cela permet aux développeurs de revenir à une version précédente si nécessaire.
  • Modularité . Les conteneurs sont des environnements virtuels indépendants et isolés. Dans une application multi-conteneurs, chaque conteneur a une fonction spécifique. En séparant l'application, les développeurs peuvent facilement travailler sur une partie particulière sans supprimer l'intégralité de l'application.
  • Ressources et rentabilité . Comme les conteneurs n'incluent pas de systèmes d'exploitation invités, ils sont beaucoup plus légers et plus petits que les machines virtuelles. Ils consomment moins de mémoire et réutilisent des composants grâce aux volumes de données et aux images. De plus, les conteneurs ne nécessitent pas de grands serveurs physiques, car ils peuvent s'exécuter entièrement sur le cloud.

Inconvénients de Docker

  • Pas d'interface graphique . Docker n'est pas le meilleur choix si vous souhaitez exécuter des applications nécessitant une interface graphique. Il sert principalement à héberger des applications qui s'exécutent en ligne de commande.
  • Problèmes de sécurité . Bien que Docker assure la sécurité en isolant les contenus de l'hôte et les uns des autres, il existe certains risques de sécurité spécifiques à Docker. De nombreux problèmes de sécurité potentiels peuvent survenir lors de l'utilisation de conteneurs. Assurez-vous donc d'adopter les meilleures pratiques de sécurité Docker qui peuvent vous aider à prévenir les attaques et les violations de privilèges.
  • Courbe d'apprentissage . Même les développeurs expérimentés avec l'infrastructure VM ont besoin de temps pour s'habituer aux concepts Docker et à leur fonctionnement. Si vous passez à Docker, assurez-vous de prendre en compte la courbe d'apprentissage nécessaire.

Ubuntu
  1. Qu'est-ce qu'un conteneur Docker :un guide d'introduction pour les débutants

  2. Qu'est-ce que Docker (et les conteneurs Linux ?)

  3. Comment utiliser Docker Compose

  4. Comment connecter des conteneurs Docker

  5. Quoi de neuf dans Docker Compose v2 ?

Traefik pour les conteneurs Docker sur Ubuntu

Qu'est-ce qu'un manifeste d'image Docker ?

Comment exécuter des conteneurs Docker

Comment supprimer les conteneurs Docker

Comment arrêter les conteneurs Docker

Que faire si un conteneur Docker se ferme immédiatement