Est-ce que les modifications d'un conteneur se conservent ?
La réponse à cette question est très simple. Les modifications sont conservées tant le conteneur Docker n'est pas supprimé.
Pour vérifier cette affirmation, nous allons faire des tests.
Aller dans le conteneur
Nous allons créer un conteneur que nous souhaitons conserver.
Vous pouvez en créer un autre grâce à la commande que vous connaissez bien maintenant 😉.
Et nous allons entrer dans ce conteneur.
docker exec -it 04d3c76cdc0d bash
Créer un fichier
Ensuite crée un fichier que l'on nommera test.js
touch test.js
On peut vérifier ensuite que le fichier à bien été créé.
ls
bin dev home lib64 mnt proc run srv test.js usr
boot etc lib media opt root sbin sys tmp var
On le voit bien. Il est entre le dossier srv
et usr
.
Pour sortir, nous allons utiliser la commande exit
. Et pour l'arrêter, la commande docker stop 04d3c76cdc0d
.
Est-ce que le fichier est toujours présent dans le conteneur ?
L'objectif à ce stade, est de répondre à la question suivante. Si nous redémarrons le conteneur, est-ce que le fichier test.js
est toujours présent ?
Nous allons le vérifier.
Redémarrons le conteneur.
docker start 04d3c76cdc0d
Entrons dans le conteneur.
docker exec -it 04d3c76cdc0d bash
Vérifions si le fichier est toujours présent.
ls
bin dev home lib64 mnt proc run srv test.js usr
boot etc lib media opt root sbin sys tmp var
Toujours présent 😃. Nous avons appris qu'un conteneur Docker garde un fichier en mémoire même si l'utilisateur l'arrêté.
ℹ️ Par conséquent lorsque nous installons un programme dans un conteneur, il est toujours présent lorsqu'on arrête le conteneur.
Est-ce que les fichiers créés sont toujours présents lorsqu'on supprime un conteneur ?
Par contre, si nous détruisons le conteneur via la commande docker rm 04d3c76cdc0d
et que nous en créons un autre avec la commande docker run -it ubuntu:18.04
, le fichier n'existera pas.
Et si vous avez bien compris la mécanique, vous trouverez ça logique. En effet, le conteneur pour exister va se baser sur l'image. Et celle-ci ne contient pas le fichier test.js
.