Aller au contenu principal

intro-docker

Comment installer docker avec Debian

Comment fonctionne Docker ?

Imaginez que vous essayez d’expédier des marchandises d’un endroit à un autre. À l’ère moderne, vous pouvez facilement le faire avec des conteneurs. Ceux-ci maintiendront certains articles ensemble dans un environnement scellé, leur permettant d’être transportés par des navires, des trains ou des avions.

Docker

Docker vs Machines virtuelles

Dans Docker, vous pouvez emballer une application dans une unité standardisée, qui peut être utilisée pour le développement de logiciels. Cette unité, ou conteneur, comprend le codage et les dépendances de l’application afin qu’elle puisse facilement fonctionner sur n’importe quel environnement informatique.

[Notes]

Avant Docker, les entreprises utilisaient souvent des machines virtuelles (Virtual Machine ou VM) pour exécuter des applications. Celles-ci peuvent émuler des ordinateurs physiques, permettant aux développeurs de transformer un serveur en plusieurs serveurs. Toutefois, cette approche peut présenter certains inconvénients.

[VM]

Chaque VM contient une copie complète du système d’exploitation et de l’application, ainsi que les binaires et bibliothèques nécessaires. Ces fichiers peuvent occuper des dizaines de Go sur un ordinateur. En outre, la virtualisation du matériel pour un système d’exploitation invité peut nécessiter des frais généraux importants.

[Conteneurs]

Dans Docker, les conteneurs sont des abstractions au niveau de la couche applicative qui peuvent contenir à la fois du code et des dépendances. Sur la même machine, plusieurs conteneurs peuvent fonctionner comme des processus isolés.

Docker Engine

Docker Engine est la technologie client-serveur permettant de créer et de conteneuriser des applications dans Docker. Essentiellement, il prend en charge toutes les tâches liées à l’exécution de votre application en conteneur.

Voici les principaux composants du moteur Docker :

  • Docker Daemon : Gère les images Docker, les conteneurs, les réseaux et les volumes. Il écoute également les requêtes de l’API Docker et les traite.

API REST de Docker Engine : Une API développée par Docker qui interagit avec le démon.

Docker CLI : L’interface de ligne de commande pour communiquer avec le démon Docker.

[Informations]

Avec le moteur Docker, vous pouvez exécuter des applications conteneurisées sur n’importe quelle infrastructure. Cette configuration contribue au moteur d’exécution de conteneurs de Docker, leader de l’industrie.

Image Docker

Une image Docker est un paquet exécutable de logiciels qui comprend tout le code source, les dépendances et les outils nécessaires pour exécuter une application. Les images sont des modèles en lecture seule qui fournissent des instructions pour créer un conteneur.

Conteneur Docker

Les conteneurs sont des éléments essentiels de Docker. En termes simples, un conteneur Docker est une zone isolée permettant à une application de s’exécuter sans affecter le reste du système. Cette unité logicielle regroupe l’ensemble du code et des dépendances afin de pouvoir être facilement transférée d’une application à l’autre.

Voici quelques avantages de l’utilisation des conteneurs Docker :

  • Standard : Bien que les conteneurs existent depuis des décennies, Docker a créé la norme industrielle pour leur utilisation. Les conteneurs Docker sont incroyablement portables et faciles à utiliser.

  • Légers : Étant donné que les conteneurs partagent le cœur du système d’exploitation, vous n’avez pas besoin d’un système d’exploitation différent pour chaque application. Par conséquent, votre application peut être exécutée plus efficacement et réduire les couts de serveur et de licence.

  • Sécurisé : Contrairement aux VM, les conteneurs isolent les applications, ce qui les rend plus surs. Avec Docker, vos conteneurs auront des capacités d’isolation par défaut.

Docker Compose

Docker Compose est un outil conçu pour exécuter plusieurs conteneurs comme un seul service. Si votre application nécessite à la fois NGINX et MySQL, Docker Compose vous permet de créer un fichier qui démarre les deux conteneurs. Cela évite d’avoir à démarrer chacun d’eux séparément.

Voici les trois étapes de base pour utiliser Docker Compose :

  1. Créez un Dockerfile pour définir l’environnement de l’application afin qu’elle puisse être reproduite.
  2. Définissez chacun des services de votre application dans un fichier docker-compose.yml afin qu’ils puissent s’exécuter dans un environnement isolé.
  3. Utilisez la commande Docker Compose pour démarrer et exécuter votre application. (docker-compose up -d)

Dockerfile

Un Dockerfile est un document texte qui comprend des instructions pour construire des images Docker. En lisant ce fichier, Docker construira automatiquement de nouvelles images.

[command]

La commande docker build créera une image à partir d'un Dockerfile et d'un contexte. Ce contexte est un ensemble de fichiers qui se trouvent dans un chemin ou une URL spécifiée.

[build-docker]

Cette commande va créer une image à patir d'un Dockerfile.

docker build

[build-f]

Cela enverra l’ensemble du contexte au démon Docker. Pour pointer vers un Dockerfile dans votre système de fichiers, utilisez cette commande :

docker build -f /path/to/a/Dockerfile

Avantages

[1] En tant que développeur, certaines de vos tâches peuvent devenir fastidieuses et répétitives lorsqu’elles sont effectuées manuellement. Avec les conteneurs Docker, vous pouvez planifier l’automatisation de ces tâches. L’utilisation de cron jobs peut réduire considérablement votre charge de travail et optimiser votre temps.

[2] De plus, Docker est hautement portable. Il permet à chaque membre de votre équipe de développement de travailler sur des applications, même avec des serveurs, des machines ou des systèmes d’exploitation différents. Cette configuration peut éliminer bon nombre des problèmes qui découlent des incompatibilités de plate-forme.

[3] Par rapport aux VM, les conteneurs Docker permettent de gagner de l’espace. Bien que Docker et les VM fonctionnent de manière similaire, Docker est beaucoup plus léger.

Inconvénients

[1] Comme nous l’avons mentionné précédemment, Docker peut être plus efficace que les VM. Toutefois, l’exécution d’applications sur un serveur physique est généralement beaucoup plus rapide.

[2] Docker peut également impliquer une courbe d’apprentissage abrupte. Il n’est pas conçu pour exécuter des applications avec une interface utilisateur graphique (GUI). Cela signifie que vous devrez apprendre la ligne de commande, ce qui peut être difficile pour les débutants.

[3] Enfin, les conteneurs Docker s’exécutent sur le système d’exploitation d’un hôte. La machine hôte peut être compromise si un logiciel malveillant est caché dans ces conteneurs.

Merci à Yannick MEKOO.