2017-01-25 3 views
0

Ich lerne Docker und die Bereitstellung einiger Beispielbilder aus dem Docker-Hub. Einer von ihnen erfordert postgresql. Wenn ich ohne Angabe eines Volumes bereitstellen, funktioniert es wunderbar. Wenn ich den Pfad des Volumes auf dem Host festlege, schlägt dies fehl und es ist nicht möglich, fsync richtig zu betreiben. Meine Frage ist, wenn ich die Volumes überprüfe, kann ich nicht finden, wo Docker diese Volumes speichert. Ich möchte in der Lage sein, ein Volume anzugeben, damit ich die Daten bei Bedarf verschieben kann. Wo speichert Docker das auf einem Windows-Rechner? Ich habe versucht, Volumen durch Kinematik zu aktivieren, aber der Container wurde unbrauchbar.Docker Volume-Details für Windows

> docker volume inspect 0622ff3e0de10e2159fa4fe6b7cd7407c6149067f138b72380a5bbe337df8f62 
[ 
    { 
     "Driver": "local", 
     "Labels": null, 
     "Mountpoint": "/var/lib/docker/volumes/0622ff3e0de10e2159fa4fe6b7cd7407c6149067f138b72380a5bbe337df8f62/_data", 
     "Name": "0622ff3e0de10e2159fa4fe6b7cd7407c6149067f138b72380a5bbe337df8f62", 
     "Options": {}, 
     "Scope": "local" 
    } 
] 

Ich kann ein Volume über Docker erstellen, bin mir aber nicht sicher, wo es auf der Festplatte gespeichert ist.

Antwort

1

Wenn Sie Windows 10 verwenden und Docker für Windows verwenden, erstellt docker eine VM und führt sie auf Ihrem lokalen Hyper-V aus. Die erstellten Volumes befinden sich dann in dieser VM, die in MobyLinuxVM gespeichert ist .vhdx (Sie können es in den Einstellungen von Docker überprüfen).

Eine Möglichkeit, Ihre Daten auf dem Host-Computer zu speichern, besteht darin, ein Laufwerk für die Docker-Einstellungen freizugeben und dann den Postgres-Datenordner auf Ihrer Windows-Festplatte abzulegen. So etwas wie docker run -it -v /c/mypgdata:/var/lib/postgresql/data postgres

Eine andere Möglichkeit, ein Volumen mit einem bestimmten Fahrer zu schaffen wäre, einen Blick auf bestehende Volumentreiber an, wenn man tun kann, was Sie wollen. Dieses für Sie von Interesse sein könnten: https://github.com/CWSpear/local-persist

Sie können auch die MobyLinux VM mit dieser „Art“ hacken

#get a privileged container with access to Docker daemon 
docker run --privileged -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker alpine sh 

#run a container with full root access to MobyLinuxVM and no seccomp profile (so you can mount stuff) 
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh 

#switch to host FS 
chroot /host 

#and then go to the volume you asked for 
cd /var/lib/docker/volumes/0622ff3e0de10e2159fa4fe6b7cd7407c6149067f138b72380a5bbe337df8f62/_data 

hier gefunden eingeben: http://docker-saigon.github.io/post/Docker-Beta/

+0

Danke für die Info, ich war Ich habe versucht, diese Antwort zu finden. Ich hatte den Verdacht, dass das Linux-Image die Volumes enthielt. Leider hat local-persist keinen Windows-Download. Oder ich verstehe nicht, wie man einen erstellt. – Rouche