当前位置: 首页 > 知识库问答 >
问题:

Docker工具箱:来自守护程序的错误响应:无效模式:/root/docker

辛麻雀
2023-03-14

我是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

我得到以下错误

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'.

这个问题没有出现在命令提示符中,所以它似乎与Power Shell有关。我在讨论板中没有找到任何东西。任何输入都将不胜感激。

最佳马库斯

共有3个答案

公孙令秋
2023-03-14

事实证明,Docker工具箱需要一种不同的方法,如本次讨论中所述

Docker论坛:将Windows目录映射到Docker容器

正如他们所说,

在Windows上,您不能直接将Windows目录映射到您的容器。因为您的容器驻留在VirtualBox VM中。所以您的docker-v命令实际上映射了VM和容器之间的目录。

所以你必须分两步走:

通过VirtualBox manager将Windows目录映射到虚拟机将容器中的目录映射到虚拟机中的目录您最好使用Kitematic UI来帮助您。这是非常容易的。

    < li >我首先在VirtualBox上为我使用的机器定义了一个共享文件夹。 < li >然后关闭该机器和docker窗口,然后再次启动docker工具箱。 < li >然后运行docker-machine ssh default,并将目录更改为您共享的文件夹(具有给定名称)。我的是“cd mydocker”,然后用ls你可以看到你与VM共享的文件。 < li >在工具箱中,运行docker run-it-v/my docker:/path _ in _ container image _ name/bin/sh < li >您应该在/path_in_container中看到文件夹和内容。
贲宜春
2023-03-14

“无效模式”错误来自解析卷装载中的第三个字段,其中每个字段由冒号分隔。在该命令中:

docker run -ti -h python -v ${pwd}:/root/docker -p 9999:9999 ubuntu:latest /bin/bash

${pwd}将扩展为c:\Program Files\…之类的内容。这意味着卷挂载将被解析为:

  • 源:C(或您当前的驱动器号,这将作为命名卷而不是主机路径进行处理)
  • 目标:/程序文件/...或您碰巧从中运行此命令的任何位置。
  • 挂载选项:/root/,这是一种“无效模式”(正常选项包括诸如ro之类的只读挂载)

所需的是驱动器号前的前导斜杠,您需要删除驱动器号后的额外冒号。使用PowerShell,您可能会被迫手动扩展路径,而不使用${pwd}。这看起来像:

docker run -ti -h python -v "/c/Program Files/...:/root/docker" -p 9999:9999 ubuntu:latest /bin/bash

如果您使用git bash,它有自己独特的特性,可以将带有正斜杠的内容转换为其安装目录下的相对路径。要禁用它,您可以切换到第二个前导斜杠:

docker run -ti -h python -v "/$(pwd):/root/docker" -p 9999:9999 ubuntu:latest //bin/bash

注意,在这两个示例中,我都引用了includes空格中case的路径。

巫马山
2023-03-14

我在使用泊坞窗工具箱时遇到了同样的问题。在源路径之前以及目标路径之前再使用一个“/”将解决此问题。在你的情况下,它看起来像这样:

docker run -ti -h python -v /${pwd}://root/docker -p 9999:9999 ubuntu:latest /bin/bash

如果这不起作用,那么尝试使用带有额外“/”的绝对路径,如下所示:

docker run -ti -h python -v //c/path_to_application://root/docker -p 9999:9999 ubuntu:latest /bin/bash
 类似资料:
  • 问题内容: 用Docker Machine创建新机器后,出现以下 错误: 我怎样才能解决这个问题? 问题答案: docker-machine upgrade 会成功的 即使您不使用RC且计算机是新创建的,也可能会发生-就像对我一样。这可能是由于ISO缓存 问题。误差在评论thisthread. 如果Docker客户端为1.9.x并且服务器正在运行docker 1.8.x, 则会观察到错误消息。

  • 问题内容: 我只需运行以下命令: 拉所有图像后返回此错误: 泊坞窗:来自守护程序的错误响应:驱动程序无法对端点Web服务器上的外部连接进行编程(ac5719bc0e95ead1a4ec6b6ae437c4c0b8a9600ee69ecf72e73f8d2d12020f97):启动用户区代理时出错:绑定0.0.0.0:80:意外错误(失败EADDRINUSE)。 这是我的码头工人版本信息: 如何解决

  • 问题内容: 我是docker的新手,正在尝试学习它。我正在关注本教程:https : //docs.docker.com/get- started/part2/#apppy 所以我在Windows上安装了Docker。创建了3个文件,app.py,Dockefile和requirements.txt 我的docker文件看起来像这样 当我在Powershell中运行它时 但是结果是: 就像它不起作

  • 我的docker在最近一次更新后开始出错。现有的容器工作,但我不能建立或运行任何图像。 一个简单的 docker运行hello world 给我一个错误: docker:来自守护进程的错误响应:OCI运行时创建失败:无法检索OCI运行时错误(打开 /run/containerd/io.containerd.runtime.v1.linux/moby/881b53be5cfe91d19577414c

  • 运行命令时出现以下问题: Docker:来自后台进程得错误响应:卷规范无效:“/home/joasimar/trai/new:opt”:类型“bind”得装入配置无效:装入路径无效:“opt”装入路径必须是绝对得. 我该怎么解决这个?

  • 每次我运行泊坞站,我都会得到这个错误。无法连接到 unix:///var/run/docker.sock 的 Docker 守护程序。泊坞窗守护程序是否正在运行? 感谢您的帮助。