这两个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
现在正在运作。现在我只是想知道$HOME
从C:\Users\USERNAME
到/c/Users/USERNAME
的转变发生在哪里
答案 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命令中调用它时,它应该自己转换它。