Faire persister les données d'un conteneur
La couche inscriptible éphémère et les trois montages (volume nommé, montage lié, tmpfs) ; les options -v et --mount ; les commandes docker volume ; ce qui survit à stop, à rm et à une nouvelle image.
- 24 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Couche inscriptible : de quoi s'agit-il ?
Voir la réponse
Espace propre à un conteneur où vont tous les fichiers qu'il écrit hors d'un montage ; elle est détruite avec lui.
Elle survit à
docker stoppuisdocker start, mais pas àdocker rm. Écrire dedans est aussi plus lent qu'écrire dans un volume.On écrit
a.txtdans/data(volume nommé),b.txtdans/tmpetc.txtdans/src(montage lié). On lancedocker rmpuisdocker runavec les mêmes montages. Quels fichiers sont encore là ?a.txtetc.txta.txtseulementa.txt,b.txtetc.txtb.txtetc.txt
Voir la réponse
a.txtetc.txt/tmpest dans la couche inscriptible, supprimée avec le conteneur. Le volume nommé vit en dehors du conteneur, et le montage lié est un dossier de l'hôte : ni l'un ni l'autre n'est touché pardocker rm.Dans
-v pgdata:/var/lib/postgresql/data,pgdataest le nom du … et/var/lib/postgresql/datale chemin où il apparaît ….Voir la réponse
Dans
-v pgdata:/var/lib/postgresql/data,pgdataest le nom du volume et/var/lib/postgresql/datale chemin où il apparaît dans le conteneur.Quand la partie gauche est un nom, c'est un volume nommé ; quand elle commence par
/ou./, c'est un montage lié vers l'hôte.Volume nommé : de quoi s'agit-il ?
Voir la réponse
Espace de stockage créé et géré par Docker, désigné par un nom, qui vit indépendamment de tout conteneur.
Docker le range dans son propre dossier (
/var/lib/docker/volumes/...) : on n'a pas à choisir de chemin sur l'hôte. C'est le choix standard pour les données d'une base.Un conteneur
postgres:16est lancé sans option-v. Après chaque mise à jour de l'image, la base est vide. Quelle est la cause probable, et la solution ?- La nouvelle image écrase les tables au démarrage ; figer l'étiquette de l'image sur
latest - Le démon Docker supprime les bases après une mise à jour ; désactiver la mise à jour automatique
- Les données restent attachées à l'ancien conteneur ; monter un volume nommé sur le dossier de données
- Le port de la base n'est pas publié ; ajouter l'option
-p 5432:5432
Voir la réponse
Les données restent attachées à l'ancien conteneur ; monter un volume nommé sur le dossier de données
Mettre à jour l'image oblige à recréer le conteneur. Sans
-v, l'imagepostgres:16range ses données dans un volume anonyme propre à l'ancien conteneur, que le nouveau ne reprend pas : il repart d'une base vide. Un volume nommé sur/var/lib/postgresql/dataest rattaché à chaque nouveau conteneur.- La nouvelle image écrase les tables au démarrage ; figer l'étiquette de l'image sur