Est-ce que les modifications d'un conteneur se conservent ?

Vidéo sur Youtube Le play Youtube

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.