在Windows 10上的Docker中将当前目录挂载为卷

描述

我通过Hyper-V在Windows 10上使用docker版本1.12.5,并希望使用容器可执行文件作为当前path中的命令。 我build立了一个运行良好的docker镜像,但是挂载当前path时遇到了问题。 这个想法是创build一个别名做一个docker运行 – RM […]命令,以便它可以在当前目录系统范围内使用。

build立

我有一个驱动器E与文件夹“testing”,并在那里有一个文件夹称为“在Windows主机上的文件夹”,以显示该命令正在工作。 Dockerfile创build目录/ data,将其定义为VOLUME和WORKDIR。 以E:\ test作为PS中的当前目录并执行带有绝对path的docker命令,可以看到E:\ test的内容:

PS E:\test> docker run --rm -it -v E:\test:/data mirkohaaser/docker-clitools ls -la total 0 drwxr-xr-x 2 root root 0 Jan 4 11:45 . drwxr-xr-x 2 root root 0 Jan 5 12:17 folder on windows host 

问题

我想使用当前的目录,而不是一个绝对的表示法。 由于不同的错误消息,我无法在卷中使用pwd:

试用($ pwd)

 PS E:\test> docker run --rm -it -v ($pwd):/data mirkohaaser/docker-clitools ls -la C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: ":/data" is not a valid repository/tag. See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'. 

试用/($ pwd)

 PS E:\test> docker run --rm -it -v /($pwd):/data mirkohaaser/docker-clitools ls -la C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: "E:\\test" is not a valid repository/tag. See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'. 

尝试使用'pwd'

 PS E:\test> docker run --rm -it -v ´$pwd´:/data mirkohaaser/docker-clitools ls -la C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Invalid bind mount spec "´E:\\test´:/data": invalid mode: /data. See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'. 

试着用`pwd`

 PS E:\test> docker run --rm -it -v `$pwd`:/data mirkohaaser/docker-clitools ls -la C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: create $pwd: "$pwd" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'. 

在Windows 10的Docker中将当前目录挂载为卷的正确语法是什么?

在Windows命令行( cmd )中,可以像这样安装当前目录:

docker run --rm -it -v %cd%:/usr/src/project gcc:4.9

在PowerShell中,使用${PWD} ,它给你当前的目录:

docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9

这在PowerShell中适用于我:

 docker run --rm -v ${PWD}:/data alpine ls /data