Non, non, une image est juste le résultat soit de:
la fin d'un build de fichier Dockerfile
un commit du système de fichier d'un container
L'image peut être vu comme un snapshot d'un système de fichier en lecture seule.
Quand tu "run une image" pour reprendre tes mots, en réalité tu fais ça :
tu copies le système de fichier de l'image pour le passer en lecture/écriture pour le container (c'est le container niveau file system)
tu attaches les volumes éventuels définis dans la commande "run" (ils sont créés s'ils n'existent pas déjà)
tu lies les ports TCP de l'hôte sur ceux du container (si définis)
... et d'autres liens entre le namespace du container et l'hôte, je ne connais pas toutes les options...
enfin, dernière étape, dans le container une commande est exécutée. Soit celle définie dans la commande "run", soit la ligne CMD du Dockerfile, soit l'ENTRYPOINT de la commande ou du Dockerfile
Pour le point "copier le système de fichier de l'image", Docker utilise des systèmes de fichiers spécialisés qui ne nécessitent pas de faire une copie réelle, comme BTRFS et OverlayFS.
Si tu supprimes ton container sans avoir fait un "commit" de son système de fichier (c'est à dire créé une image depuis un système mouvant, c'est une mauvaise idée !) ni avoir mis les données dans un volume, alors tu perds ces données.
Si tu penses "redémarrer" comme uniquement "stop" et "start", alors oui, les données sont conservées. Mais ce n'est pas le cas intéressant de Docker.
[^] # Re: Quelque chose qui m'échappe
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au journal Sauvegarder le contenu d’un container Docker avec BackupPC. Évalué à 3.
Non, non, une image est juste le résultat soit de:
L'image peut être vu comme un snapshot d'un système de fichier en lecture seule.
Quand tu "run une image" pour reprendre tes mots, en réalité tu fais ça :
Pour le point "copier le système de fichier de l'image", Docker utilise des systèmes de fichiers spécialisés qui ne nécessitent pas de faire une copie réelle, comme BTRFS et OverlayFS.
Si tu supprimes ton container sans avoir fait un "commit" de son système de fichier (c'est à dire créé une image depuis un système mouvant, c'est une mauvaise idée !) ni avoir mis les données dans un volume, alors tu perds ces données.
Si tu penses "redémarrer" comme uniquement "stop" et "start", alors oui, les données sont conservées. Mais ce n'est pas le cas intéressant de Docker.