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
如果要将$APPDATA
Windows 主机上挂载到/datadir
docker 容器上,请使用以下命令:
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 上你不应该遇到这个问题。