Notifications de mise à jour de l'application
Informatique

Docker

Ça marche sur ma machine, et sur la tienne aussi

50 flashcards
Informatique
Rappel espacé

Questions & réponses

1

Qu'est-ce qu'un conteneur ?

Un processus isolé qui partage le noyau de la machine hôte

2

Qu'est-ce qu'une machine virtuelle virtualise, que le conteneur ne virtualise pas ?

Le matériel : une VM embarque son propre noyau et son propre OS

3

Qu'est-ce qu'une image Docker ?

Un modèle immuable, en lecture seule, à partir duquel on lance des conteneurs

4

Qu'est-ce que la couche d'écriture d'un conteneur ?

Une fine couche propre au conteneur, ajoutée au-dessus de l'image en lecture seule

5

Qu'est-ce qu'un Dockerfile ?

Un fichier texte d'instructions pour construire une image

6

Rôle de l'instruction FROM dans un Dockerfile ?

Définit l'image de base sur laquelle on construit

7

Rôle de l'instruction RUN dans un Dockerfile ?

Exécute une commande au moment du build et crée une nouvelle couche

8

Rôle de l'instruction CMD dans un Dockerfile ?

La commande par défaut du conteneur, remplaçable par les arguments de docker run

9

Rôle de l'instruction ENTRYPOINT dans un Dockerfile ?

L'exécutable fixe du conteneur : les arguments de docker run s'y ajoutent au lieu de le remplacer

10

Dans un Dockerfile, quelle différence entre `CMD ["node", "app.js"]` et `CMD node app.js` ?

Forme exec (tableau) : node est PID 1. Forme shell : c'est /bin/sh -c qui est PID 1

11

Rôle de l'instruction COPY dans un Dockerfile ?

Copie des fichiers du contexte de build vers l'image

12

Dans `docker run -p 8080:80 nginx`, quel port est celui de l'hôte ?

8080 : l'ordre est toujours hôte:conteneur

13

L'instruction EXPOSE 80 rend-elle le port 80 accessible depuis l'hôte ?

Non : EXPOSE est de la documentation, c'est -p qui publie le port

14

Qu'est-ce qu'une couche (layer) d'image Docker ?

Le résultat d'une instruction du Dockerfile, empilé en lecture seule sur les précédentes

15

Pourquoi copier `package.json` et lancer `npm install` avant de copier le reste du code source ?

Pour que le cache de build survive aux modifications du code

16

Que désigne le `.` dans `docker build -t monapp:1.0 .` ?

Le contexte de build : le dossier envoyé au démon Docker

17

À quoi sert le fichier .dockerignore ?

À exclure des fichiers du contexte de build (node_modules, .git, secrets…)

18

Qu'est-ce qu'un build multi-stage ?

Un Dockerfile à plusieurs FROM, où l'image finale ne garde que les artefacts du stage de build

19

Que signifie le tag latest sur une image ?

Rien de spécial : c'est juste le tag par défaut, pas forcément la version la plus récente

20

Comment se nomme complètement une image, par exemple `ghcr.io/org/app:1.2` ?

registre / dépôt : tag

21

Que fait l'option `--rm` de `docker run` ?

Supprime automatiquement le conteneur quand il s'arrête

22

Différence entre `docker ps` et `docker ps -a` ?

ps : conteneurs en cours. ps -a : tous, y compris les arrêtés

23

Commande pour ouvrir un shell dans un conteneur en cours d'exécution ?

docker exec -it sh

24

Commande pour lire la sortie (stdout/stderr) d'un conteneur ?

docker logs (avec -f pour suivre en direct)

25

Que deviennent les fichiers écrits dans un conteneur quand on le supprime ?

Perdus avec sa couche d'écriture, sauf s'ils sont dans un volume

26

Qu'est-ce qu'un volume Docker ?

Un espace de stockage persistant géré par Docker, monté dans un conteneur

27

Qu'est-ce qu'un bind mount ?

Un dossier de l'hôte monté tel quel dans le conteneur

28

Pourquoi créer un réseau Docker (`docker network create`) plutôt qu'utiliser le bridge par défaut ?

Sur un réseau défini par l'utilisateur, les conteneurs se contactent par leur nom (DNS intégré)

29

Que fait `--network host` ?

Le conteneur utilise directement la pile réseau de l'hôte, sans isolation ni -p

30

Qu'est-ce que Docker Compose ?

Un outil pour définir et lancer une application multi-conteneurs depuis un fichier YAML

31

Rôle de l'instruction HEALTHCHECK ?

Définit une commande périodique qui dit si le conteneur est en bonne santé

32

Dans Compose, `depends_on: [db]` garantit-il que la base est prête quand `api` démarre ?

Non : seulement que le conteneur db est démarré, pas que Postgres accepte des connexions

33

Portée d'un ARG dans un Dockerfile ?

Le build uniquement : la valeur n'existe plus dans le conteneur

34

Pourquoi ajouter une instruction USER dans un Dockerfile ?

Pour ne pas exécuter l'application en root dans le conteneur

35

Qui exécute réellement les conteneurs quand on tape `docker run` ?

Le démon dockerd : la commande docker n'est qu'un client qui lui parle via une API

36

Pourquoi donner accès à `/var/run/docker.sock` à un conteneur est-il dangereux ?

Qui parle au démon Docker peut lancer un conteneur privilégié : c'est root sur l'hôte

37

Qu'est-ce que l'OCI (Open Container Initiative) ?

Les standards ouverts du format d'image et du runtime de conteneur

38

Quel mécanisme du noyau Linux assure l'isolation d'un conteneur (ce qu'il voit) ?

Les namespaces

39

Quel mécanisme du noyau Linux limite les ressources d'un conteneur (CPU, mémoire) ?

Les cgroups (control groups)

40

Que fait `--restart unless-stopped` ?

Redémarre le conteneur s'il plante ou au reboot, sauf si on l'a arrêté à la main

41

Que fait `docker system prune` ?

Le ménage : conteneurs arrêtés, réseaux inutilisés, images orphelines et cache de build pendant

42

Pourquoi les images basées sur Alpine sont-elles si petites ?

Distribution minimaliste (~5 Mo) avec musl et busybox au lieu de glibc et coreutils

43

Commande pour voir toute la configuration d'un conteneur (IP, montages, variables) ?

docker inspect

44

Comment garantir qu'on déploie exactement la même image qu'en test, indépendamment des tags ?

La référencer par son digest : image@sha256:…

45

Portée d'un ENV dans un Dockerfile ?

Le build et le runtime : la variable est vue par le processus du conteneur

46

Pourquoi ne pas passer un secret par ARG au build ?

Il reste visible dans l'historique de l'image (docker history)

47

Que fait ADD que COPY ne fait pas ?

Extraire automatiquement une archive tar locale, et télécharger depuis une URL

48

Rôle de l'instruction WORKDIR ?

Fixe le dossier courant pour les instructions suivantes et pour le processus du conteneur

49

Différence entre `docker stop` et `docker kill` ?

stop envoie SIGTERM puis SIGKILL après 10 s ; kill envoie SIGKILL tout de suite

50

`docker compose down` supprime-t-il les volumes ?

Non : il faut ajouter -v pour les supprimer

Prêt à t'y mettre ?