QCM : Images Docker et bonnes pratiques (11 questions)

Questions et réponses du QCM

1. Quel est le rôle principal d’un Dockerfile dans la création d’une image Docker ?

Définir les étapes nécessaires à la création d’une image
Organiser le stockage et la distribution des images
Décrire l’état d’un conteneur pendant son exécution
Configurer les paramètres propres à l’application

Définir les étapes nécessaires à la création d’une image

Explication

Un Dockerfile définit les étapes à suivre pour créer une image Docker. L’état d’exécution relève du conteneur, tandis que le stockage et la configuration de l’application sont d’autres fonctions.

2. Une équipe prépare un Dockerfile pour une application dont la commande de lancement est complexe. Quelle organisation correspond à la structure nominale décrite ?

Image de base, dépendances, autres fichiers, port interne et lancement dans un script shell, sans l’application
Image de base, application, dépendances, port interne et lancement, sans ajouter les autres fichiers
Image de base, application, autres fichiers, port de l’hôte et lancement directement dans le Dockerfile
Image de base, application, dépendances, autres fichiers, port interne et lancement dans un script shell

Image de base, application, dépendances, autres fichiers, port interne et lancement dans un script shell

Explication

La structure nominale rassemble l’image de base, l’application, ses dépendances, les autres fichiers, le port d’écoute interne et la commande de lancement, qui peut être placée dans un script shell si elle est complexe. Le port de l’hôte n’est pas le port interne, et l’application ainsi que ses fichiers font partie des éléments prévus.

3. Un client envoie une requête GET à la racine « / » de l’application Express de l’exemple. Quel résultat reçoit-il ?

Le texte « Hello, Express! »
Le texte « express-docker:0.1.0 »
Le texte « App running at http://localhost:3000 »
Une réponse sans contenu sur le port 3000

Le texte « Hello, Express! »

Explication

La route GET « / » renvoie le texte « Hello, Express! ». Le message sur localhost est écrit dans la console au démarrage, tandis que le port et le nom de l’image ne sont pas le corps de cette réponse.

4. Une personne veut construire l’image Express avec son étiquette prévue, puis lancer le conteneur en arrière-plan, le supprimer à l’arrêt et relier le port 3000 du conteneur au port 3000 de l’hôte. Quelle suite d’actions convient ?

Construire avec `docker build --tag express-docker:0.1.0 .`, puis lancer avec arrière-plan, suppression à l’arrêt et `-p 3000:8080`
Construire sans étiquette, puis lancer avec arrière-plan, suppression à l’arrêt et `-p 3000:3000`
Construire avec `docker build --tag express-docker:0.1.0 .`, puis lancer avec `-p 3000:3000` sans arrière-plan ni suppression à l’arrêt
Construire avec `docker build --tag express-docker:0.1.0 .`, puis lancer avec arrière-plan, suppression à l’arrêt et `-p 3000:3000`

Construire avec `docker build --tag express-docker:0.1.0 .`, puis lancer avec arrière-plan, suppression à l’arrêt et `-p 3000:3000`

Explication

La construction utilise l’étiquette `express-docker:0.1.0`, et le lancement demandé combine l’arrière-plan, la suppression à l’arrêt et la publication du port 3000 vers le port 3000. La liaison `3000:8080` change le port du conteneur; les autres propositions omettent l’étiquette ou des options de lancement demandées.

5. Que désigne l’instruction RUN dans un Dockerfile ?

Une instruction qui documente le port réseau sur lequel le conteneur écoute
Une commande par défaut lancée au démarrage de chaque conteneur
Un paramètre transmis à la construction et utilisé comme variable d’environnement
Une commande exécutée pendant la construction de l’image, sans interaction avec l’utilisateur

Une commande exécutée pendant la construction de l’image, sans interaction avec l’utilisateur

Explication

RUN exécute une commande lors de la construction de l’image, et cette commande doit être non interactive puisqu’aucune entrée ne peut être fournie pendant le build. CMD, en revanche, définit la commande par défaut du conteneur au démarrage.

6. Quel aspect des couches Docker favorise la réutilisation des données entre plusieurs constructions ?

Elles remplacent l’image de base lors de chaque instruction.
Elles exécutent les commandes de lancement pendant la construction.
Elles publient automatiquement les ports réseau du conteneur.
Elles permettent la mise en cache et le partage des données.

Elles permettent la mise en cache et le partage des données.

Explication

Chaque instruction crée une couche qui fonctionne comme un instantané, et ces couches facilitent la mise en cache ainsi que le partage des données. La publication des ports relève de la configuration réseau, et non du mécanisme des couches.

7. Quel est l’intérêt de définir un répertoire de travail adapté dans l’image de base d’une application ?

Préciser les ports réseau sur lesquels l’application est censée écouter
Choisir la version mineure du système utilisée pour construire l’image
Réserver un emplacement à l’application selon les conventions du langage ou du framework
Déterminer l’utilisateur qui exécutera les commandes de lancement du conteneur

Réserver un emplacement à l’application selon les conventions du langage ou du framework

Explication

Un répertoire de travail adapté fournit à l’application un emplacement organisé, conforme aux conventions de son langage ou de son framework. La version de l’image de base contribue à stabiliser la construction, mais ne détermine pas l’emplacement de l’application.

8. En quoi le choix d’une image de base précise, comme node:20.8-alpine, diffère-t-il du choix d’une image plus petite ?

La version précise stabilise la construction face aux mises à jour en amont, tandis qu’une image plus petite réduit la taille et la surface d’attaque.
La version précise accélère la publication, tandis qu’une image plus petite empêche les ruptures dues aux mises à jour en amont.
La version précise réduit la surface d’attaque, tandis qu’une image plus petite garantit la reproductibilité des constructions.
La version précise réserve un répertoire à l’application, tandis qu’une image plus petite accélère l’installation des dépendances.

La version précise stabilise la construction face aux mises à jour en amont, tandis qu’une image plus petite réduit la taille et la surface d’attaque.

Explication

Préciser l’image jusqu’à une version mineure contribue à stabiliser les constructions et à éviter les ruptures liées aux mises à jour en amont ; une image plus petite allège l’image et réduit sa surface d’attaque. La reproductibilité des dépendances relève plutôt de npm ci, et non du choix d’une image plus petite.

9. Pourquoi copier les fichiers de dépendances et installer les paquets avant de copier le code de l’application peut-il accélérer les reconstructions de l’image ?

Les dépendances sont installées uniquement au démarrage du conteneur.
Le code de l’application est automatiquement exclu de toutes les couches de l’image.
La couche des dépendances reste en cache lorsque seul le code de l’application change.
Le cache local est supprimé après chaque modification du code source.

La couche des dépendances reste en cache lorsque seul le code de l’application change.

Explication

L’installation des dépendances se trouve dans une couche antérieure qui peut être réutilisée si les fichiers de dépendances n’ont pas changé. Copier le code en premier produirait l’effet inverse : ses modifications pourraient invalider le cache utilisé pour l’installation.

10. Lors de l’exécution d’un conteneur, comment faut-il utiliser EXPOSE pour que l’application soit accessible depuis l’hôte ?

Définir le port d’écoute dans l’image et laisser Docker le publier automatiquement au lancement
Documenter le port d’écoute dans l’image, ce qui le rend accessible depuis l’hôte au lancement
Publier le port dans l’image avec EXPOSE, puis documenter le port de l’hôte au lancement
Documenter le port d’écoute dans l’image et publier ce port au lancement du conteneur

Documenter le port d’écoute dans l’image et publier ce port au lancement du conteneur

Explication

EXPOSE indique le port sur lequel l’application est censée écouter, mais il faut aussi publier ce port lors de l’exécution du conteneur pour le rendre accessible depuis l’hôte. La présence d’EXPOSE dans l’image ne publie pas à elle seule le port.

11. Quels éléments caractérisent la structure nominale d’un Dockerfile ?

Une image de base, les ports de l’hôte, les journaux du conteneur, un utilisateur et une commande d’arrêt
Une application et ses dépendances, une commande de construction, les ports publiés et une politique de redémarrage
Une image de base, l’application et ses dépendances, les autres fichiers, le port interne et une commande de lancement
Une image de base, les étapes de déploiement, les volumes persistants, les règles réseau et une commande de maintenance

Une image de base, l’application et ses dépendances, les autres fichiers, le port interne et une commande de lancement

Explication

La structure nominale rassemble l’image de base, l’application et ses dépendances, les autres fichiers, le port d’écoute interne et la commande de lancement. Les ports de l’hôte et les règles de redémarrage relèvent plutôt de la configuration d’exécution du conteneur.

Révisez avec les flashcards

Mémorisez les réponses avec 10 flashcards sur Images Docker et bonnes pratiques.

Que définit un Dockerfile ?

Les étapes nécessaires à la création d’une image Docker.

Quels éléments comprend la structure nominale d’un Dockerfile ?

L’image de base, l’application, ses dépendances, les autres fichiers, le port d’écoute interne et la commande de lancement.

Quel message répond l’application Express à une requête GET sur « / » ?

« Hello, Express! »

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Images Docker et bonnes pratiques.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM