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

Pau*_*ver 11 windows cygwin bash windows-8.1 docker

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

我在从我的用户文件夹安装目录时遇到问题。我试过了:

$ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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'.
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时,我得到了相同的结果:

$ 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
Run Code Online (Sandbox Code Playgroud)

我也试过:

$ docker run -d --name abe -v ~/APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我得到了错误:

FATA[0000] Error response from daemon: cannot bind mount volume: ~\AppData\Bitcoin volume paths must be absolute.
Run Code Online (Sandbox Code Playgroud)

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

小智 13

如果要将$APPDATAWindows 主机/datadir上的挂载到docker 容器上,而不是以下命令:

docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

您可以发出:

docker run -d --name abe -v //c/Users/YOUR_USER_NAME/$APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

//c/Users/PATH_TO_DIR 是 Windows 目录的关键

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


小智 6

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

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

在 cmd.exe/powershell 上,您不应该遇到此问题。