【问题标题】:Docker volume mapping folder issue on Windows 10Windows 10 上的 Docker 卷映射文件夹问题
【发布时间】:2020-06-05 15:08:09
【问题描述】:

我正在尝试运行以下命令

docker run -p 3000:3000 -v/app/node_modules -v $(pwd):/app 2ef0206fcf99

我收到以下错误

docker: Error response from daemon: create $(pwd): "$(pwd)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

我该如何解决这个问题?

【问题讨论】:

  • 一种替代方法是切换到 Docker Compose,即使您只有一个容器。您可以在那里使用相对卷,例如-v .:/app,即使在 Windows 上也是如此。
  • 如果您在控制台中运行 $(pwd) 的值是多少? (也许编辑问题并添加它。)然后将它与它在错误中显示的正则表达式进行比较。它是否会因为您在 cmd 窗口而不是 Powershell 中运行它而返回错误(pwd 在 cmd 中不存在,但在 Powershell 中存在,因为它是 Get-Location 的别名)?您的路径中是否实际上有 非法字符?等等……
  • 这能回答你的问题吗? docker : invalid reference format

标签: docker docker-compose docker-volume


【解决方案1】:

1) 使用Windows Powershell,以下对我有用:

docker run --rm -it -v ${pwd}:/mydir nginx:latest bash

注意:

  • 我在pwd 周围使用了大括号,而不是小括号

2) 使用Git Bash,以下语法应该可以工作:

winpty docker run --rm -it -v "/$PWD":/mydir nginx:latest bash

注意:

  • 如果你在命令开头没有使用winpty,你会得到错误信息:the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

  • 还要注意/ 之前的$PWD。没有/,它不会抛出错误,但我注意到它没有挂载目录。

【讨论】:

  • 请注意,$(pwd) 在 Powershell 中也有效,尽管在风格上我也更喜欢 {}
  • @msanford:如果我使用$(pwd),我会得到错误:C:\Program Files\Docker\Docker\resources\bin\docker.exe: invalid reference format
  • @Technext $(pwd) 在 windows powershell 上也为我工作!
  • 有趣!阅读更多我发现这实际上是一个骗局。也许是奇怪的码头主义?无论如何,你都会得到 +1。
【解决方案2】:

我在 windows 上也遇到了同样的问题,请确保你把“$PWD”这样的东西,所以你的命令应该是这样的

docker run --rm -it -p 3000:3000 -v "$PWD:/app" 2ef0206fcf99

或者另一种方式是

docker run --rm -it -p 3000:3000 --volume="$PWD:/app" 2ef0206fcf99

【讨论】:

  • 我看到当我尝试你的语法时它没有挂载目录
  • @Technext 我添加了正确的版本。请立即查看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2020-02-07
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
相关资源
最近更新 更多