J'utilise Docker Toolbox sur OSX.
J'ai créé un conteneur de volume de données pour stocker les données persistantes: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
J'ai vérifié que ces données sont bien stockées sur la VM boot2docker (créée par docker-machine) et non sur le conteneur, afin qu'elles persistent. Cependant, le «redémarrage de la station d'accueil» efface ces données personnalisées sur le VM.
Je ne trouve pas de documentation sur ce qui se passe. J'ai trouvé un message sur le forum mentionnant que les données dans / var / lib / docker seront préservées, mais je n'ai trouvé aucun document officiel indiquant cela et cela semble également étrange étant donné que le guide de stockage persistant ci-dessus n'utilise pas ce chemin ou même mentionne que vos données seront supprimées.
Est-ce prévu et dans l'affirmative, existe-t-il une documentation officielle sur le chemin correct pour stocker les données persistantes?
Edit: Ajout d'un exemple de senario défaillant
$ docker-machine ssh alt
docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
hello
docker@alt:~$ exit
$ docker-machine restart alt
Starting VM...
$ docker-machine ssh alt
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
cat: can't open '/var/lib/mysql/hello': No such file or directory
Je n'utilise pas boot2docker, mais si / data est effacé au redémarrage, c'est là que votre volume est stocké (
docker run -v /data:/var/lib/mysql
), donc il sera perdu.Ce que vous faites, c'est également combiner deux modèles différents pour gérer la persistance du volume. Afin d'obtenir la persistance, les conteneurs peuvent monter des volumes à partir d'un emplacement spécifié sur le système hôte (qui est présumé être persistant), ou ils peuvent être associés à un conteneur de données et montés avec
--volumes-from
. Il semble que l'approche du système de fichiers hôte ne soit pas appropriée pour boot2docker, et vous devez utiliser le modèle de volume de données (uniquement).Vraisemblablement, vous devriez créer votre conteneur de données avec
-v /var/lib/mysql
plutôt que-v /data:/var/lib/mysql
.la source
Notez que j'utilise docker pour mac beta qui utilise le xhyve vm.
Le contenu de / var / lib / boot2docker sera conservé entre les redémarrages de la machine. Donc, si vous voulez que certains fichiers soient disponibles sur votre VM, mettez-les dans ce répertoire.
Si vous souhaitez qu'ils soient accessibles dans un emplacement différent pour exécuter les conteneurs Docker, vous pouvez ajouter ce qui suit à / var / lib / boot2docker / profile:
Si vous souhaitez ajouter une autre configuration aux fichiers système qui persistera entre les redémarrages de VM, comme des valeurs supplémentaires dans votre fichier d'hôtes, vous pouvez ajouter une commande telle que celle ci-dessous à / var / lib / boot2docker / profile:
J'espère que cela aide
la source