From 9cfe63fe8f3eee77a597975c038a6b45de063df2 Mon Sep 17 00:00:00 2001 From: iliya <iliya.saroukhanian@etu.hesge.ch> Date: Sun, 12 May 2024 17:59:09 +0200 Subject: [PATCH] feat: ex2 of lab7 done --- content/07_docker_storage.md | 105 +++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/content/07_docker_storage.md b/content/07_docker_storage.md index 7776bd1..e5e70ec 100644 --- a/content/07_docker_storage.md +++ b/content/07_docker_storage.md @@ -40,3 +40,108 @@ et existant dans la couche basse est modifié ? et existant dans la couche basse est supprimé ? - Le modifications ne seront pas propagées dans la couche basse car celle-ci est immutable. + +## Exercice 2 + +### Ajout de l'image `fedora` + +```bash +docker pull fedora:41 +``` + +### Exécution du container + +```bash +docker run --rm -it fedora:41 /bin/bash +``` + +- Ajout d'un fichier à la racine + +```bash +touch root_file +``` + +- Suppression de `/etc/issue` + +```bash +rm /etc/issue +``` + +- Ajout d'une ligne à `/etc/passwd` + +```bash +echo "Hello world" >> /etc/passwd +``` + +### Inspection du container + +```bash +docker inspect <container_name> +``` + +- Combien de couches basses contient ce container et quelles sont leurs chemins +absolus dans le système de fichiers sur la machine hôte ? + +```bash +docker inspect serene_banzai | jq '.[0].GraphDriver.Data' +``` + +Il semberait que le container contiennent 2 couches basses, leurs chemins absolu +dans la machine hôte sont délimité par un `:` + + - /var/lib/docker/overlay2/c09fee9d46e25b792b708cf644e1fae6e93b69316cacf6d601050b6947c2e671-init/diff + - /var/lib/docker/overlay2/4760625ee9a5f5e1b9b35b91cc070433b30ba2a931a70b770dafc1b0153e3952/diff + +- Quel est le chemin absolu de la couche container _writable_ ? + +```bash +"UpperDir": "/var/lib/docker/overlay2/c09fee9d46e25b792b708cf644e1fae6e93b69316cacf6d601050b6947c2e671/diff" +``` + +- À l'aide de la commande `tree`, listez le contenu complet de la couche container +_writable_ : + +```bash +sudo tree /var/lib/docker/overlay2/c09fee9d46e25b792b708cf644e1fae6e93b69316cacf6d601050b6947c2e671/diff +``` + +```bash +├── etc +│ ├── issue +│ └── passwd +└── root_file +``` + +- Sur la machine hôte, quel est le chemin absolu du répertoire correspondant +au _rootfs_ du container ? + +```bash +docker inspect serene_banzai | jq '.[0].GraphDriver.Data.MergedDir' +``` + +- /var/lib/docker/overlay2/c09fee9d46e25b792b708cf644e1fae6e93b69316cacf6d601050b6947c2e671/merged + +Déplacez-vous dans le répertoire correspondant au _rootfs_ du container, puis +créez le fichier `Hello_from_the_outside`. + +```bash +sudo su +cd /var/lib/docker/overlay2/c09fee9d46e25b792b708cf644e1fae6e93b69316cacf6d601050b6947c2e671/merged +touch Hello_from_the_outside +``` + +- Suite à cette opération, qu'observez vous dans le container lorsque vous listez +le contenu du répertoire racine ? + - Quand on retourne inspecter les fichiers à la racine du container, le fichier + `Hello_from_the_outside` créé depuis la machine hôte, est bien dans le container. + + +- Est-ce qu'il possible de simplement utiliser la commande mount sur le serveur +pour obtenir les mêmes informations (à la place d'utiliser la commande +`docker inspect`) ? Justifiez votre démarche. + - Je suppose que non car la commande `mount` en elle-même ne fourni pas + d'informations sur le métadonnées d'un container et donc ne permet pas de + de connaître le chemin exact vers les diverses couches du container. + + + -- GitLab