Qu'est-ce que Docker ?

Ensemble logiciel très répandu qui sert à construire des images de conteneur, à échanger des images avec des registres, et à démarrer et gérer des conteneurs. Il construit les images à partir des instructions écrites dans un Dockerfile et démarre les conteneurs avec docker run. Il peut publier des ports avec -p, conserver des données dans des volumes et des montages bind, et configurer le réseau. Les formats d'image et de conteneur sont normalisés par les spécifications de l'OCI (Open Container Initiative) : les mêmes images peuvent donc être utilisées avec d'autres outils que Docker.

Nom japonais: Docker

« Docker » apparaît dans 6 questions d'entraînement réparties sur 1 thèmes, dont Bases du cloud et des conteneurs.

Domaine: Bases du cloud et des conteneurs

S'entraîner : questions sur Docker

Sur un hôte Linux, Docker sert à démarrer un conteneur à partir d'une image fondée sur une autre distribution que celle de l'hôte, et l'on y exécute uname -r (commande qui affiche la version du noyau) et cat /etc/os-release (commande qui affiche les informations sur la distribution). Quelle description des résultats est correcte ?

  1. Auname -r comme /etc/os-release affichent des informations sur le noyau et la distribution de l'hôte
  2. Buname -r comme /etc/os-release affichent des informations sur la distribution sur laquelle l'image est fondée et sur son noyau
  3. Cuname -r affiche le noyau de l'hôte, et /etc/os-release affiche la distribution de l'image
Afficher la réponse et l'explication

Réponse : C. uname -r affiche le noyau de l'hôte, et /etc/os-release affiche la distribution de l'image

Un conteneur partage le noyau de l'hôte : uname -r, qui interroge le noyau, affiche donc la version du noyau de l'hôte, même dans le conteneur. /etc/os-release, en revanche, est un fichier : il est lu dans le système de fichiers que voit le conteneur, c'est-à-dire dans l'image, et il affiche le nom de la distribution de l'image. Une image ne contient pas de noyau, seulement des fichiers de l'espace utilisateur comme des commandes et des bibliothèques. C'est pourquoi un programme qui dépend d'une fonction absente du noyau de l'hôte ne fonctionne pas non plus dans un conteneur.

Dans un conteneur démarré à partir d'une image, on modifie le fichier de configuration /etc/app.conf, qui fait partie de l'image. Quelle description de ce qui se passe avec le mécanisme de stockage habituel de Docker (comme overlay2) est correcte ?

  1. ALe fichier est copié dans la couche inscriptible du conteneur puis modifié ; l'image et les autres conteneurs ne sont donc pas affectés
  2. BLe fichier de la couche de l'image est modifié directement ; les autres conteneurs démarrés à partir de la même image voient donc aussi le nouveau contenu
  3. CLes couches d'une image sont en lecture seule : les fichiers contenus dans l'image ne peuvent donc pas être modifiés, et l'écriture échoue avec une erreur
Afficher la réponse et l'explication

Réponse : A. Le fichier est copié dans la couche inscriptible du conteneur puis modifié ; l'image et les autres conteneurs ne sont donc pas affectés

Le système de fichiers d'un conteneur présente sous la forme d'une seule arborescence les couches de l'image, en lecture seule, surmontées d'une couche inscriptible propre au conteneur. La première fois qu'un fichier d'une couche inférieure est modifié, il est copié dans la couche inscriptible, et c'est ensuite cette copie qui est utilisée (copie sur écriture). Les couches de l'image restent donc inchangées, et les autres conteneurs qui partagent la même image ne sont pas affectés. Comme la première copie d'un gros fichier prend du temps, les données écrites fréquemment, comme celles d'une base de données, sont placées dans un volume.

« Docker » dans les explications

Questions mentionnant « Docker » (6)

  1. Sur un hôte Linux, Docker sert à démarrer un conteneur à partir d'une image fondée sur une autre distribution que celle de l'hôte, et l'on y exécute uname -r (commande qui affiche la version du noyau) et cat /etc/os-release (commande qui affiche les informations sur la distribution). Quelle description des résultats est correcte ?
  2. Dans un conteneur démarré à partir d'une image, on modifie le fichier de configuration /etc/app.conf, qui fait partie de l'image. Quelle description de ce qui se passe avec le mécanisme de stockage habituel de Docker (comme overlay2) est correcte ?
  3. Pour le Dockerfile ci-dessus, quelle association entre la commande exécutée lors de la construction de l'image avec docker build et la commande exécutée lors du démarrage d'un conteneur avec docker run est correcte ?
  4. Une image nommée pinger, construite à partir du Dockerfile ci-dessus, est démarrée par docker run pinger example.com. Quelle est la commande exécutée dans le conteneur ?
  5. Dans Docker, quelle description des volumes nommés et des montages bind (bind mounts), qui servent à conserver les données écrites par un conteneur, est correcte ?
  6. Une image est récupérée (pull) en indiquant registry.example.com/team/web:1.4. Quelle association donnant le sens de chaque partie de cette référence est correcte ?

Termes associés

Conteneur Copie sur écriture (copy-on-write) JSON (JavaScript Object Notation) Argument Déploiement bleu-vert (blue-green deployment) Déploiement canari (canary release) Image de conteneur Informatique sans serveur (serverless) Infrastructure en tant que code (IaC) Infrastructure immuable (immutable infrastructure)

Retour au glossaire