Aller au contenu

Exercice 6 — Défi autonome

Durée : ~40 min · Individuel · Théorie associée : Aide-mémoire des commandes

Objectif

Cet exercice n'est pas guidé. Il vérifie que vous savez utiliser seul les commandes de la semaine. Chaque volet donne un résultat à obtenir, mais pas les commandes. Gardez l'aide-mémoire ouvert, et utilisez --help autant que vous voulez.

Notez chaque commande que vous tapez. Vous en aurez besoin pour l'auto-évaluation.

Volet 1 — Trois sites, trois logiciels

Une image peut contenir un simple serveur web ou une application complète. Faites tourner en même temps, dans votre VM, trois conteneurs issus de trois images officielles différentes :

Nom du conteneur Image Port de la VM
site-nginx nginx 8081
site-apache httpd 8082
site-nextcloud nextcloud 8083

Réalisations attendues :

  1. Les trois conteneurs apparaissent dans docker ps, chacun avec la bonne flèche dans la colonne PORTS.
  2. Les trois adresses http://10.70.#.31:8081, :8082 et :8083 affichent chacune une page différente dans le navigateur de votre poste.
  3. Vous savez dire, en lisant docker logs, lequel des trois a reçu vos visites, et combien.

Indice : les trois conteneurs écoutent sur le port 80. L'image nextcloud pèse plus de 1 Go : son téléchargement prend une minute ou deux. Si un doute persiste, la page de l'image sur Docker Hub l'indique.

Résultat attendu sur le port 8081 : Welcome to nginx!

Résultat attendu sur le port 8082 : It works!, la page d'Apache httpd

Résultat attendu sur le port 8083 : l'assistant d'installation de Nextcloud, qui demande de créer un compte administrateur

Volet 2 — Une page à votre nom

Dans site-apache, remplacez la page d'accueil par une page qui affiche votre prénom. Le dossier du site n'est pas le même que celui de nginx : à vous de le trouver.

Réalisations attendues :

  1. http://10.70.#.31:8082 affiche votre prénom.
  2. Votre page est toujours là après un docker stop suivi d'un docker start de site-apache.
  3. Vous savez prédire ce qui arrivera à votre page après un docker rm -f site-apache suivi d'un nouveau docker run. Vérifiez.

Indice : la page de l'image httpd sur Docker Hub, dans la section How to use this image, donne le chemin du dossier.

Volet 3 — Diagnostiquer

Lancez exactement cette commande, sans la corriger :

Bash
docker run -d --name panne -p 8084:8080 nginx

docker ps montre le conteneur Up, mais http://10.70.#.31:8084 ne répond pas.

Réalisations attendues :

  1. Expliquez, en une phrase, pourquoi la page ne répond pas.
  2. Remplacez le conteneur panne par un conteneur du même nom qui répond sur http://10.70.#.31:8084.

Volet 4 — Diagnostiquer, encore

Lancez exactement cette commande, sans la corriger :

Bash
docker run -d --name bd mariadb:11

Le conteneur n'apparaît pas dans docker ps.

Réalisations attendues :

  1. Trouvez, avec une commande Docker, le message qui explique pourquoi le conteneur s'est arrêté.
  2. Remplacez le conteneur bd par un conteneur du même nom qui reste Up, avec le mot de passe administrateur de votre choix.
  3. Dans bd, ouvrez le client mariadb et affichez la liste des bases de données.

Volet 5 — Faire place nette

Réalisations attendues :

  1. docker ps -a n'affiche plus aucun conteneur.
  2. docker images n'affiche plus aucune image.
  3. Vous avez utilisé au moins une commande prune.

Indice : docker rmi refuse de supprimer une image tant qu'un conteneur en dépend, même arrêté.

Auto-évaluation et intégration

Cette section ne demande pas de document à remettre, mais sert à vérifier vos acquis. Vous devez être capable d'expliquer clairement les points suivants à un collègue, ou lors d'une entrevue pour un stage ou un emploi :

  • Image et conteneur : expliquer la différence, avec une analogie de votre choix, et dire laquelle des deux commandes docker images et docker ps -a montre quoi.
  • LXC et Docker : expliquer ce qu'un template LXC et une image Docker ont en commun, et ce qui distingue un conteneur LXC d'un conteneur Docker.
  • Le cycle de vie : décrire ce que deviennent les fichiers d'un conteneur après docker stop, après docker start, puis après docker rm.
  • run, start et exec : dire laquelle crée un conteneur, laquelle relance un conteneur existant, et laquelle ajoute un processus dans un conteneur qui tourne.
  • La publication de port : expliquer à quoi sert -p 8081:80, et pourquoi trois conteneurs peuvent écouter sur le port 80 sans conflit, mais pas utiliser le même port de la VM.
  • Le diagnostic : donner, dans l'ordre, les deux premières commandes à taper quand un conteneur ne répond pas comme prévu.
  • Le lien avec la semaine 7 : relire une commande docker run de l'exercice 4 de la semaine 7, et expliquer chacune des options que vous connaissez maintenant.