适用于Windows的Docker卷详细信息

我正在学习Docker,并从Docker Hub中部署一些示例图像。 其中之一需要postgresql。 当我没有指定音量的情况下部署,它运行的很好。 当我指定卷'主机上的path',它会失败,无法正常fsync。 我的问题是,当我检查卷时,我无法finddocker在哪里存储这些卷。 我希望能够指定一个卷,所以我可以在需要时移动数据。 Docker将它存储在Windows机器上? 我尝试通过Kinematic启用音量,但容器变得无法使用。

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

我可以通过docker创build一个卷,但不知道它在硬盘上的存储位置。

如果您使用的是Windows 10并使用Docker for Windows,则docker将创build一个虚拟机并在本地hyper-v上运行该虚拟机,然后创build的这些卷位于该虚拟机的内部,该虚拟机存储在MobyLinuxVM.vhdx(您可以在docker的设置中检查它)。

目前在主机上获取数据的一种方法是在Docker设置上共享驱动器,然后将postgres数据文件夹映射到Windows硬盘驱动器。 像docker run -it -v /c/mypgdata:/var/lib/postgresql/data postgres

另一种方法是用特定的驱动程序创build一个卷,看看现有的卷驱动程序,如果你可以做你想要的。 这可能是你感兴趣的: https : //github.com/CWSpear/local-persist

你也可以用这种“黑客”来进入MobyLinux虚拟机

 #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 

在这里find: http : //docker-saigon.github.io/post/Docker-Beta/