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

问题描述:

docker-compose.yml这样的:如何在Windows机器上访问docker数据卷?

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机器上。也许我可以创建一些额外的容器,可以将数据从docker虚拟机传递到我的目录中?

当我安装文件夹是这样的:

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

用我的本地目录 - 我没有因为权限问题的成功。并阅读“正确的方式”是使用码头卷。

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

对于Windows下的Linux容器,docker在Linux虚拟机上运行实际上为,因此您的named卷是该VM中的本地目录到容器中的目录的映射。

所以你得到的作为/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月。码头工作人员说0123.。

+0

将此容器添加到我的'docker-compose.yml'中以便将来使用它是一种好方法吗?或者你能建议如何更好地同步代码库? –

+1

我认为这样做很好。 – Robert

+0

我在最后一行添加了更多信息。 – Robert