Mar*_*ler 6 docker docker-toolbox
我是Docker新手,目前正在复制课程视频。我必须补充说,我只有Windows 10 Home,因此仅限于Docker Toolbox。(在工作中,我有W 10 Pro并使用Docker本身,没有遇到我要报告的问题)。
当我在Windows Power Shell中运行以下命令时:
PS C:\Program Files\Docker Toolbox> docker run -ti -h python -v ${pwd}:/root/docker -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: invalid mode: /root/docker.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)
在命令提示符下不会发生此问题,因此它似乎与Power Shell有关。我没有在讨论区找到任何东西。任何输入将不胜感激。
最佳马库斯
Meh*_*pek 15
事实证明,Docker Toolbox 需要一种不同的方法,如本讨论中所述
Docker 论坛:将 Windows 目录映射到 Docker 容器
正如他们所说,
在 Windows 上,您不能直接将 Windows 目录映射到您的容器。因为您的容器驻留在 VirtualBox 虚拟机中。所以你的 docker -v 命令实际上映射了 VM 和容器之间的目录。
所以你必须分两步完成:
通过 VirtualBox 管理器将 Windows 目录映射到 VM 将容器中的目录映射到 VM 中的目录您最好使用 Kitematic UI 来帮助您。这要容易得多。
BMi*_*tch 15
“无效模式”错误来自解析卷安装中的第三个字段,其中每个字段用冒号分隔。在这个命令中:
docker run -ti -h python -v ${pwd}:/root/docker -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
该${pwd}
会扩大到像c:\Program Files\...
。这意味着卷挂载将被解析为:
C
或您当前的驱动器号,这将作为命名卷而不是主机路径进行处理)/Program Files/...
或者你碰巧从哪里运行这个命令。/root/
这是一种“无效模式”(正常选项包括ro
只读挂载等内容)需要的是驱动器号之前的前导斜杠,并且您希望删除驱动器号之后的额外冒号。使用 PowerShell,您可能被迫手动扩展路径而不使用${pwd}
. 那看起来像:
docker run -ti -h python -v "/c/Program Files/...:/root/docker" -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
如果您使用 git bash,它有自己独特的功能,可以将带有正斜杠的内容转换为安装目录下的相对路径。要禁用它,请切换到第二个前导斜杠:
docker run -ti -h python -v "/$(pwd):/root/docker" -p 9999:9999 ubuntu:latest //bin/bash
Run Code Online (Sandbox Code Playgroud)
请注意,在两个示例中,我都引用了路径,以防包含空格。
小智 12
我建议您在 Windows 中使用绝对路径,例如:
docker run -ti -h python -v /c/path_to_application:/root/docker -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
添加/c/then_remaining_part_to_your_app
,注意/c/
是驱动。
小智 9
使用docker工具箱时遇到相同的问题。在源路径以及目标路径之前再使用一个“ /”将解决此问题。在您的情况下,它将如下所示:
docker run -ti -h python -v /${pwd}://root/docker -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,则尝试使用带有额外的“ /”的绝对路径,如下所示:
docker run -ti -h python -v //c/path_to_application://root/docker -p 9999:9999 ubuntu:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7313 次 |
最近记录: |