在 Windows 的 boot2docker 中从主机挂载目录

在 Windows 的 boot2docker 中从主机挂载目录

boot2docker我在 Windows 8.1 机器上运行 docker 1.6 。当我使用 Boot2Docker Start 快捷方式时,它会带我进入 cygwin bash 提示符,我可以在其中本地运行 docker 命令。

我无法从用户文件夹挂载目录。我尝试过:

$ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

我收到错误:

invalid value "C:\\Users\\someone\\AppData\\Roaming/Bitcoin:/datadir"
for flag -v: \Users\someone\AppData\Roaming/Bitcoin:/datadir 
is not an absolute path 
See 'c:\Program Files\Boot2DockeForWindows\docker.exe run --help'.

当我用这些方式调用它时,我得到了相同的结果:

$ docker run -d --name abe -v "$APPDATA/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v "/c/users/someone/AppData/Roaming/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v ~/AppData/Roaming/Bitcoin:/datadir poliver/bitcoin-abe

我也尝试过:

$ docker run -d --name abe -v ~/APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

我收到了错误:

FATA[0000] Error response from daemon: cannot bind mount volume: ~\AppData\Bitcoin volume paths must be absolute.

似乎 cygwin bash 正在替换/\然后 docker 解析传递给的参数-v但无法接受它。

答案1

如果要将$APPDATAWindows 主机上挂载到/datadirdocker 容器上,请使用以下命令:

docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

您可以发出:

docker run -d --name abe -v //c/Users/YOUR_USER_NAME/$APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

//c/Users/PATH_TO_DIR 此处的密钥是 Windows 目录

您的$APPDATA目录必须驻留在/c/Users/Your_User_Name目录中,并且不能驻留在其他地方。(例如D:/$APPDATA在D分区。)

答案2

看:https://github.com/docker/docker/issues/12590

如果您在 Windows 上使用 git bash,msysgit 会将 /c/users 之类的路径转换为 ​​c:\users(这不是您想要的,因为 boot2docker VM 内的路径是 /c/Users)

在 cmd.exe/powershell 上你不应该遇到这个问题。

相关内容