diff --git a/content/07_docker_storage.md b/content/07_docker_storage.md index e5e70ecfd9e243a3229ebad6acf39fcdd46568aa..592ff4f0bd4fdbeaca413c53619bc1d2fe73de15 100644 --- a/content/07_docker_storage.md +++ b/content/07_docker_storage.md @@ -52,7 +52,7 @@ docker pull fedora:41 ### Exécution du container ```bash -docker run --rm -it fedora:41 /bin/bash +docker run --rm -it fedora:41 /bin/bash ``` - Ajout d'un fichier à la racine @@ -144,4 +144,122 @@ pour obtenir les mêmes informations (à la place d'utiliser la commande de connaître le chemin exact vers les diverses couches du container. +## Exercice 3 +Dans cette exercice on désire modifier un container existant et rendre ces +modifications persistantes en les _"committant"_ dans une nouvelle image. + +- Quelle est la version la plus récente de l'image `debian` que vous avez trouvé ? + - Après m'être renseigné, il semblerait que la version la plus récente de + `debian` serait la 12.5 + +```bash +docker pull debian:12.5 +``` + +Démarrez alors un container nommé `mydebian` instancié depuis l'image que vous +venez de télécharger. + +```bash +docker run --name mydebian -it debian:12.5 /bin/bash +``` + +- Suppression des répertoires `/opt` `/mnt` et de la commande `/usr/bin/uniq` : + +```bash +rm -rf /opt /mnt +rm /usr/bin/uniq +``` + +- Création du fichier `/home/random` de 8500 bytes à partir de `/dev/urandom` à +l'aide de la commande `dd` : + +```bash +dd if=/dev/urandom of=/home/random bs=8500 count=1 +``` + +- Ajout à la fin du fichier `/etc/motd` du message "Tagada tsoin tsoin" + +```bash +echo "Tagada tsoin tsoin" >> /etc/motd +``` + +À l'aide de `docker diff`, affichez les différences entre votre container +`mydebian` et l'image utilisée pour instancié celui-ci. + +```bash +docker diff mydebian +``` + +```bash +C /home +A /home/random +C /etc +C /etc/motd +C /usr +C /usr/bin +D /usr/bin/uniq +D /opt +D /mnt +``` + +- Quelle est la signification de la lettre située dans la première colonne des +résultats de `docker diff` ? + - C $\Rightarrow$ _Changed_ + - A $\Rightarrow$ _Added_ + - D $\Rightarrow$ _Deleted_ + +À l'aide de la commande `docker commit`, committez alors ces changements en créeant +la nouvelle image `debian:new`. + +```bash +docker commit mydebian debian:new +``` + +Détruisez alors le container `debian` précédent puis inspectez l'historique +de l'image `debian:new` que vous venez de créer. + +```bash +docker rm mydebian +``` + +- Combien de couches ont été ajoutées à l'image suite à vos modifications + +```bash +docker inspect <image> | jq '.[0].RootFS.Layers' +``` + +- Image originale : + +```bash +[ + "sha256:072686bcd3db19834cd1e0b1e18acf50b7876043f9c38d5308e5e579cbefa6be" +] +``` + +- Image modifiée : + +```bash +[ + "sha256:072686bcd3db19834cd1e0b1e18acf50b7876043f9c38d5308e5e579cbefa6be", + "sha256:533b8a2c0530e4620b811c83a318b26d690438fe3879dc190cd61bc4a1d89447" +] +``` + +Nous pouvons par conséquent remarquer qu'une nouvelle couche fut rajoutée dans +la nouvelle image + +- Quel est la taille de cette nouvelle couche ? + +```bash +docker history debian:new +``` + +```bash +IMAGE CREATED CREATED BY SIZE COMMENT +51e7bace94f8 4 hours ago /bin/bash 8.8kB +d2a2c1ada45a 2 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B +<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:2cc4cba2834c189d0… 117MB +``` + +Il semblerait donc que la taille de cette nouvelle couche est de 8.8kB