Description
我通过Hyper-V在Windows 10上使用Docker版本1.12.5,并希望将容器可执行文件用作当前路径中的命令 . 我构建了一个运行良好的Docker镜像,但是我在安装当前路径时遇到了问题 . 我们的想法是创建一个别名并执行一个 docker run --rm [...]
命令,以便它可以在当前目录中的系统范围内使用 .
Setup
我有一个带有文件夹"test"的驱动器E,并且在那里有一个名为"folder on windows host"的文件夹,以显示该命令正在运行 . Dockerfile创建目录 /data
,将其定义为VOLUME和WORKDIR .
将 E:\test
作为PowerShell中的当前目录并使用绝对路径执行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
Problem
我想使用当前目录而不是绝对符号 . 由于不同的错误消息,我无法在卷中使用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中的卷的正确语法是什么?
4 回答
在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
Cross Platform
以下两个选项适用于PowerShell和Linux:
docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9
docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9
这在PowerShell中适用于我:
这个命令应该修复它 .
docker run --rm -it -v
${PWD}:c:\data
mirkohaaser / docker-clitools是主机当前文件夹 .
:
之后是容器文件夹 . 如果安装正确,则文件将列在容器中的控制器c:\data
中 .您需要将所有反斜杠替换为正斜杠以进行更改
docker -v C:\ my \ folder:/ mountlocation ...
至
docker -v C:/ my / folder:/ mountlocation ...
我通常从一个cmd脚本调用docker,我希望文件夹挂载相对于我正在调用的脚本,所以在那个脚本中我这样做...