Bases du cloud et des conteneurs

FROM alpine
ENTRYPOINT ["ping", "-c", "3"]
CMD ["localhost"]

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 ?

  1. Aping -c 3 localhost
  2. Bping -c 3 example.com
  3. Cexample.com (la tentative de l'exécuter comme commande échoue avec une erreur)
Afficher la réponse et l'explication

Réponse : B. ping -c 3 example.com

Un ENTRYPOINT écrit sous forme exec (un tableau JSON) est la commande que le conteneur exécute toujours, et CMD en fournit les arguments par défaut. Les arguments écrits après le nom de l'image dans docker run remplacent CMD et sont ajoutés après l'ENTRYPOINT : c'est donc ping -c 3 example.com qui est exécuté. Démarré sans arguments, par docker run pinger, le conteneur utiliserait le localhost de CMD, ce qui donnerait ping -c 3 localhost. Pour changer l'ENTRYPOINT lui-même, on utilise l'option --entrypoint de docker run.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases du cloud et des conteneurs

  1. Un conteneur est démarré par la commande ci-dessus à partir de l'image nginx, un serveur web qui écoute sur le port 80. L'adresse IP de l'hôte est 192.0.2.10, et il n'y a aucune restriction comme un pare-feu. Quelle est l'URL correcte pour joindre ce serveur web depuis un navigateur sur un autre PC du même réseau ?
  2. Le Dockerfile (B) ci-dessus a été obtenu à partir du Dockerfile (A), qui plaçait RUN npm ci après COPY . ., en changeant l'ordre pour ne copier d'abord que les fichiers de dépendances. npm ci prend 120 secondes, npm run build 30 secondes et COPY . . 2 secondes, et la durée des autres instructions est négligeable. L'image est reconstruite 20 fois par jour après une modification du seul code source sous src (package.json et package-lock.json ne changent pas). Si le cache de la construction précédente peut être utilisé, de combien la durée totale de construction par jour est-elle plus courte avec B qu'avec A ?
  3. 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 ?
  4. 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 ?
  5. scratch est une image vide qui ne contient aucun fichier. Quelle description du contenu de l'image finale construite avec le Dockerfile multi-étapes ci-dessus est correcte ?