Aller au contenu

Quiz du chapitre 7 : Docker Compose

Consignes

Autoévaluation : 10 questions, environ 10 minutes. Chaque question a une seule bonne réponse. Répondez d'abord de mémoire, puis cliquez sur « Réponse » pour vérifier. En cas d'erreur, relisez la section indiquée du cours.

Question 1. Quel est l'intérêt principal de Docker Compose ?

  • A. Il rend les conteneurs plus rapides
  • B. Il décrit une application multi-conteneurs dans un fichier, créée et supprimée par une seule commande
  • C. Il répartit automatiquement une application sur plusieurs machines
  • D. Il remplace les images par des fichiers YAML
Réponse

B. Le fichier décrit services, réseaux et volumes ; il est versionnable et rejouable. La répartition sur plusieurs machines relève de Swarm (section 1).

Question 2. Quelles sont les trois sections principales d'un fichier compose.yaml ?

  • A. images, containers, ports
  • B. build, run, stop
  • C. services, networks, volumes
  • D. web, app, db
Réponse

C. Les services sont les conteneurs ; les réseaux et volumes nommés se déclarent dans leurs sections (section 2).

Question 3. Un fichier Compose est refusé avec une erreur de syntaxe. Quelle est la cause la plus fréquente ?

  • A. Un fichier trop long
  • B. Une indentation avec des tabulations ou un décalage de niveau
  • C. Un nom de service en minuscules
  • D. L'absence de la ligne docker
Réponse

B. L'indentation exprime la structure du YAML : on utilise des espaces, jamais de tabulations (section 2).

Question 4. Dans une pile Compose sans réseau déclaré, comment le service web joint-il le service db ?

  • A. Il ne le peut pas sans publier le port de db
  • B. Par l'adresse IP de db, qui est fixe
  • C. Par le nom de service db et le port du conteneur
  • D. Par localhost
Réponse

C. Compose crée un réseau pour la pile, avec DNS intégré. Les adresses IP changent, et localhost désigne le conteneur lui-même (section 4).

Question 5. Un dossier s'appelle blog et contient un compose.yaml avec un volume pgdata. Sous quel nom le volume est-il créé par défaut ?

  • A. pgdata
  • B. blog_pgdata
  • C. compose_pgdata
  • D. Un nom aléatoire
Réponse

B. Les ressources sont préfixées par le nom du projet, qui est par défaut le nom du dossier (section 4).

Question 6. Où placer le mot de passe de la base pour qu'il ne figure pas dans le fichier Compose partagé ?

  • A. Dans un fichier .env, utilisé avec ${DB_PASSWORD} et exclu du dépôt
  • B. Dans le nom du service
  • C. Dans le nom de l'image
  • D. Dans le Dockerfile de la base
Réponse

A. Compose lit automatiquement .env et remplace les expressions ${...}. Le fichier ne doit pas être versionné (section 6.2).

Question 7. Que signifie l'expression ${PORT:-8080} ?

  • A. Le port est obligatoire, sinon erreur
  • B. La valeur de PORT, ou 8080 si elle est absente ou vide
  • C. Le port 8080 toujours, quelle que soit la variable
  • D. La suppression de la variable PORT
Réponse

B. La forme ${VAR:-défaut} fournit une valeur par défaut. Pour une variable obligatoire, on écrit ${VAR:?message} (section 6.2).

Question 8. Que garantit depends_on utilisé sans condition ?

  • A. Que le service dont on dépend est prêt à accepter des connexions
  • B. L'ordre de démarrage des conteneurs seulement
  • C. Que le service dépendant redémarre en cas d'erreur
  • D. Que les deux services partagent le même réseau
Réponse

B. Sans condition, seul l'ordre de démarrage est contrôlé. Pour attendre qu'un service soit prêt, il faut un healthcheck et condition: service_healthy (section 7.3).

Question 9. Quel est le rôle de start_period dans un healthcheck ?

  • A. Fixer le délai entre deux vérifications
  • B. Fixer la durée maximale d'une vérification
  • C. Définir un délai de grâce au démarrage, pendant lequel les échecs ne comptent pas
  • D. Définir le nombre d'échecs avant de supprimer le conteneur
Réponse

C. interval règle le délai entre deux vérifications, timeout la durée d'une vérification, retries le nombre d'échecs avant l'état unhealthy (section 7.2).

Question 10. Quelle commande supprime les conteneurs et réseaux d'une pile et ses volumes déclarés ?

  • A. docker compose stop
  • B. docker compose down
  • C. docker compose down -v
  • D. docker compose rm -f
Réponse

C. down conserve les volumes ; down -v les supprime avec leurs données. stop arrête seulement les conteneurs (section 8).