Hopp til innhold

Docker – Qu'est-ce que Docker ?

Skip to content

Ceci est un texte traduit par machine et peut contenir des erreurs !

Qu’est-ce que Docker ?

Vous devez configurer un serveur web sur un serveur Linux. Une possibilité consiste à installer le serveur web et toutes les dépendances directement dans le système d’exploitation du serveur. Avec Docker, vous pouvez plutôt récupérer une image prête à l’emploi image et créer un conteneur à partir de celle-ci.

Ici, vous serez capable d’expliquer la différence entre une image et un conteneur et de montrer ce que fait Docker entre une commande et un service en cours d’exécution. Vous n’avez pas encore besoin d’installer quoi que ce soit.

Avant de commencer : Pouvez-vous expliquer la différence entre une machine virtuelle (VM) et un conteneur ? Si vous êtes incertain, commencez par Conteneurs et machines virtuelles. Vous y verrez également comment Docker peut s’exécuter au sein d’une VM Linux sur Proxmox.

Place dans le contenu pédagogique : Docker est un outil de conteneurisation. Le noyau du système d’exploitation explique ce que partagent les conteneurs. La carte d’ensemble montre la relation entre le système d’exploitation, la VM, le conteneur et l’outil.

Docker est l’outil qui gère les conteneurs

Docker peut construire et récupérer des images, créer et démarrer des conteneurs et gérer leurs réseaux et leur stockage. Sur un serveur Linux, c’est le moteur Docker (Docker Engine) qui effectue ce travail.

Lorsque vous tapez docker run, vous utilisez la cliente en ligne de commande de Docker. La cliente envoie une requête au service Docker, dockerd, qui gère le conteneur. Dans l’environnement d’exercice, à la fois la cliente et le service s’exécutent dans la machine virtuelle Linux.

Vous pouvez saisir la commande dans la console de la machine virtuelle sur Proxmox ou lors d’une session SSH vers cette même machine virtuelle. Les deux méthodes contrôlent Docker dans la même machine virtuelle. Docker Desktop est un autre produit qui regroupe les outils Docker dans une application de bureau ; il n’est pas nécessaire pour la configuration du serveur ici.

Une image peut être utilisée pour plusieurs conteneurs

L'image nginx:alpine est utilisée pour créer deux conteneurs distincts. L'un s'appelle min-nginx et fonctionne, tandis que l'autre s'appelle test-nginx et est arrêté. L'image existe toujours indépendamment des deux.

Une image est un paquet contenant les fichiers, le programme et les paramètres utilisés pour créer un conteneur. nginx:alpine est un exemple : nginx indique le nom de l’image, et alpine est une étiquette, qui désigne une variante d’image. Une étiquette peut ultérieurement pointer vers une nouvelle version.

Un conteneur est une instance individuelle créée à partir de l’image, avec son propre nom, sa propre état et sa couche writable (modifiable). Le conteneur peut avoir été créé, être en cours d’exécution ou être arrêté. Un programme arrêté ne signifie donc pas que le conteneur a été supprimé.

L’image n’est modifiée lorsque vous modifiez un fichier dans la couche modificable du conteneur. Si vous créez un autre conteneur à partir de la même image, celui-ci aura sa propre couche modificable.

D’où vient l’image ?

Un registre de conteneurs stocke et distribue les images. Docker Hub et GitHub Container Registry sont deux exemples.

Si une image existe dans le registre mais pas sur le serveur, Docker peut la récupérer avec docker pull. Vous pouvez également construire votre propre image à partir du code source et d’un fichier Dockerfile ; vous y serez confronté au niveau 2.

Concept Dans l’exemple du serveur web
Registre Docker Hub, où l’image Nginx peut être récupérée.
Image nginx:alpine, le paquet téléchargé.
Conteneur min-nginx, une instance créée à partir du paquet.
Service Le serveur web qui répond aux requêtes HTTP pendant que le programme s’exécute.

Que signifient les premières commandes ?

Vous n’avez besoin de lire que cet exemple pour le moment. L’installation et la mise en œuvre pratique seront abordées dans [[Docker Nivau 1 - Prise en main|Niveau 1]].

docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps

La première commande récupère l’image. La deuxième crée et démarre le conteneur min-nginx et connecte le port 8080 du serveur au port 80 du conteneur. La troisième affiche les conteneurs en cours d’exécution. Nginx est le programme qui répond aux requêtes ; Docker gère l’environnement dans lequel il s’exécute.

Anticipez ce qui reste

Vous avez une image et deux conteneurs issus de celle-ci. Vous arrêtez puis supprimez uniquement min-nginx.

  1. L’image existe-t-elle toujours ?
  2. test-nginx disparaît-il également ?
  3. Pouvez-vous créer un nouveau conteneur à partir de l’image ?

Vérifiez la réponse : L’image existe toujours et test-nginx n’a pas été supprimé. Vous pouvez créer un nouveau conteneur à partir de la même image. En revanche, les fichiers présents uniquement dans la couche writable de min-nginx ont disparu lorsque ce conteneur a été supprimé.

Vous êtes prêt pour le Niveau 1 si vous pouvez expliquer la différence avec vos propres mots et identifier le registre, l’image, le conteneur et le service dans l’exemple. Si vous confondez image et conteneur, utilisez la figure et réessayez avec d’autres noms de conteneurs. Pour approfondir, expliquez pourquoi docker ps seul ne montre pas si l’image existe ou si un conteneur arrêté est encore stocké.

Poursuivre

[[Docker Niveaу 1 - Démarrage rapide|Installez Docker Engine]]. Utilisez la [[Conteneurisation Niveau 1 - Conteneurs et machines virtuelles|ressource sur la conteneurisation]] comme support lorsque vous souhaitez examiner le rapport avec les machines virtuelles (VM) et la virtualisation.

Sources : Architecture de Docker, image et cycle de vie d’un conteneur. L’illustration a été réalisée pour cette ressource.