使用docker run命令的绝对路径不起作用

时间:2016-10-24 08:09:01

标签: docker

这两个docker run命令之间的区别是什么,为什么一个工作而另一个没有。

工作指令

docker run --publish=7474:7474 --volume=$HOME/neo4j_test/data:/data neo4j

不工作

docker run --publish=7474:7474 --volume=C:/Users/USERNAME/neo4j_test/data:/data neoj

docker run --publish=7474:7474 --volume=C:\Users\USERNAME\neo4j_test\data:/data neo4j

这些命令出错

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Invalid bind mount spec "C:UsersUSERNAMEneo4j_testdata:/data": invalid mode: /data. See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.

在非工作命令中,我只是将$HOME替换为我的用户个人资料文件夹C:/Users/USERNAME的绝对路径

更新

我确实通过在Windows Powershell上执行$HOME来检查echo $HOME的值。实际上它是C:\Users\USERNAME。我也看过@Titouan Freville评论过的link。所以我使用了命令

docker run --publish=7474:7474 --volume=/c/Users/USERNAME/neo4j_test/data:/data neo4j

不是

docker run --publish=7474:7474 --volume=C:/Users/USERNAME/neo4j_test/data:/data neoj

现在正在运作。现在我只是想知道$HOMEC:\Users\USERNAME/c/Users/USERNAME的转变发生在哪里

2 个答案:

答案 0 :(得分:3)

对于仍在使用Windows的Docker仍存在此问题的人,以下是两种可行的解决方案:

前缀命令

MSYS_NO_PATHCONV=1

完整MSYS_NO_PATHCONV=1 docker run -v /c/path:/path

使用双斜杠

//开头

完整docker run -v //c/path:/path


来源:https://github.com/moby/moby/issues/24029#issuecomment-250412919

答案 1 :(得分:2)

关闭主题。这是解决方案;)docker toolbox mount file on windows

此外,Windows上的docker插入$ HOME必须与它兼容,所以当你在docker命令中调用它时,它应该自己转换它。