在docker run命令不起作用的情况下使用绝对路径
这两个docker运行命令之间的区别是什么?为什么一个运行而另一个不运行 工作命令在docker run命令不起作用的情况下使用绝对路径,docker,Docker,这两个docker运行命令之间的区别是什么?为什么一个运行而另一个不运行 工作命令 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\US
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:守护程序的错误响应:无效绑定装载规范“C:UserSuserNameeo4J\u testdata:/data”:无效模式:/data。
请参阅“C:\Program Files\Docker Toolbox\Docker.exe运行-帮助”
在非工作命令中,我只是将$HOME
替换为我的用户配置文件文件夹C:/Users/USERNAME
更新
我确实通过在Windows Powershell上执行echo$HOME
检查了$HOME
的值。实际上它是C:\Users\USERNAME
。我也看了@Titouan Freville评论的文章。所以我用了命令
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
的转换发生在哪里来结束这个主题。这是解决方案;)
此外,windows上docker对$HOME的插值必须与它兼容,因此当您在docker命令中调用它时,它应该自己对其进行转换 对于仍有Docker For Windows问题的用户,以下是两种可行的解决方案: 为您的命令添加前缀 使用
MSYS\u NO\u PATHCONV=1
全文:MSYS\u NO\u PATHCONV=1 docker run-v/c/path:/path
使用双斜杠
/
开头
全文:docker run-v//c/path:/path
来源:您能给我们提供错误消息吗?你应该有一个。如果它是一个未找到的文件,请确保$HOME==C:/Users/USERNAME。您还应该查看以下帖子:。这可能是一个答案。@TitouanFreville请参阅更新:)尝试
--volume=C:\/Users\/USERNAME/\neo4j\u test/\data:/data
我猜这就是Docker Machine解释路径的方式。他应该将其转换为与他兼容的类似linux的版本;)只是这个答案的补充说明。驱动器号应为小写。例如,如果在windows上使用git bash添加一个额外的斜杠,这将起作用,即:-v/c/path:/path
到-v//c/path:/path