如何在Windows机器上访问docker数据卷?

我有像这样docker-compose.yml

 version: '3' services: mysql: image: mysql volumes: - data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=$ROOT_PASSWORD volumes: data: 

我的挂载点如下所示: /var/lib/docker/volumes/some_app/_data我想从该挂载点访问数据,我不知道如何在Windows机器上做到这一点。 也许我可以创build一些额外的容器,可以将数据从泊坞窗虚拟机传递到我的目录?

当我像这样安装文件夹时:

 volumes: - ./data:/var/lib/mysql 

使用我的本地目录 – 由于权限问题,我没有成功。 并阅读“正确的方式”是使用docker卷。

UPD:MySQL容器只是个例子。 我想为我的代码库使用这样的行为,并使用Docker本地开发。

在Windows下,docker 实际上是在一个Linux虚拟机上运行的,所以你的named卷是该虚拟机本地目录到容器目录的映射。

所以你得到/var/lib/docker/volumes/some_app/_data是该虚拟机内的一个目录。 要检查它,你可以:

 docker run --rm -it -v /:/vm-root alpine:edge ls -l /vm-root/var/lib/docker/volumes/some_app/_data total 188476 -rw-r----- 1 999 ping 56 Jun 4 04:49 auto.cnf -rw------- 1 999 ping 1675 Jun 4 04:49 ca-key.pem -rw-r--r-- 1 999 ping 1074 Jun 4 04:49 ca.pem -rw-r--r-- 1 999 ping 1078 Jun 4 04:49 client-cert.pem -rw------- 1 999 ping 1679 Jun 4 04:49 client-key.pem -rw-r----- 1 999 ping 1321 Jun 4 04:50 ib_buffer_pool -rw-r----- 1 999 ping 50331648 Jun 4 04:50 ib_logfile0 -rw-r----- 1 999 ping 50331648 Jun 4 04:49 ib_logfile1 -rw-r----- 1 999 ping 79691776 Jun 4 04:50 ibdata1 -rw-r----- 1 999 ping 12582912 Jun 4 04:50 ibtmp1 drwxr-x--- 2 999 ping 4096 Jun 4 04:49 mysql drwxr-x--- 2 999 ping 4096 Jun 4 04:49 performance_schema -rw------- 1 999 ping 1679 Jun 4 04:49 private_key.pem -rw-r--r-- 1 999 ping 451 Jun 4 04:49 public_key.pem -rw-r--r-- 1 999 ping 1078 Jun 4 04:49 server-cert.pem -rw------- 1 999 ping 1675 Jun 4 04:49 server-key.pem drwxr-x--- 2 999 ping 12288 Jun 4 04:49 sys 

这是运行一个辅助容器,它已经将VM /根文件系统挂载到容器dir /vm-root

要得到一些文件在后台运行一些命令的容器( tail -f /dev/null在我的情况下),那么你可以使用docker cp

 docker run --name volume-holder -d -it -v /:/vm-root alpine:edge tail -f /dev/null docker cp volume-holder:/vm-root/var/lib/docker/volumes/volumes_data/_data/public_key.pem . 

如果你想要一个透明的SSH到那个虚拟机,它似乎还不支持,截至2017年6月。 这里一个docker工作人员说。