Ich verwende Docker Toolbox unter OSX.
Ich habe einen Datenvolumencontainer zum Speichern persistenter Daten erstellt: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
Ich habe überprüft, ob diese Daten tatsächlich auf der boot2docker-VM (erstellt von der Docker-Maschine) und nicht auf dem Container gespeichert sind, damit sie bestehen bleiben. "Docker-Computer-Neustart" löscht jedoch diese benutzerdefinierten Daten auf der VM.
Ich kann keine Dokumentation darüber finden, was passiert. Ich habe einen Forumsbeitrag gefunden, in dem erwähnt wird, dass Daten in / var / lib / docker erhalten bleiben, aber ich konnte keine offiziellen Dokumente finden, die dies angeben, und es scheint auch seltsam, wenn man bedenkt, dass der obige Leitfaden für persistenten Speicher diesen Pfad nicht verwendet oder dies sogar erwähnt Ihre Daten werden gelöscht.
Wird dies erwartet und wenn ja, gibt es eine offizielle Dokumentation zum richtigen Pfad zum Speichern persistenter Daten?
Bearbeiten: Hinzufügen eines Beispiels für ein fehlgeschlagenes Szenario
$ 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
Ich verwende boot2docker nicht, aber wenn / data beim Neustart gelöscht wird, wird dort Ihr Volume gespeichert (
docker run -v /data:/var/lib/mysql
), sodass es verloren geht.Sie kombinieren außerdem zwei verschiedene Muster für die Behandlung der Volumenpersistenz. Um die Persistenz zu erhalten, können Container Volumes von einem bestimmten Speicherort auf dem Hostsystem bereitstellen (von dem angenommen wird, dass sie persistent sind), oder sie können einem Datencontainer zugeordnet und mit bereitgestellt werden
--volumes-from
. Es klingt so, als ob der Ansatz des Host-Dateisystems nicht für boot2docker geeignet ist, und Sie sollten (nur) das Datenvolumenmuster verwenden.Vermutlich sollten Sie Ihren Datencontainer
-v /var/lib/mysql
eher mit als erstellen-v /data:/var/lib/mysql
.quelle
Beachten Sie, dass ich Docker für Mac Beta verwende, das xhyve vm verwendet.
Der Inhalt von / var / lib / boot2docker bleibt zwischen den Neustarts des Computers erhalten. Wenn Sie also möchten, dass bestimmte Dateien auf Ihrem VM verfügbar sind, legen Sie sie in diesem Verzeichnis ab.
Wenn Sie möchten, dass auf sie an einem anderen Speicherort zugegriffen werden kann, um Docker-Container auszuführen, können Sie / var / lib / boot2docker / profile Folgendes hinzufügen:
Wenn Sie Systemdateien eine andere Konfiguration hinzufügen möchten, die zwischen VM-Neustarts bestehen bleibt, z. B. zusätzliche Werte in Ihrer Hosts-Datei, können Sie / var / lib / boot2docker / profile einen Befehl wie den folgenden hinzufügen:
Ich hoffe es hilft
quelle