如何在Windows上使用Docker Toolbox的--volume选项?

Ant*_* O. 37 docker boot2docker docker-toolbox

如何在我的Windows文件和docker容器之间共享文件夹,方法是--volume使用Docker Toolbox在简单的命令下安装卷?

我正在使用"Docker Quickstart终端",当我尝试这个时:

winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

Invalid value "C:\\Users\\myuser\\:\\myuser" for flag --volume: bad mount mode specified : \myuser
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

在此之后,我也试过了

winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu
Run Code Online (Sandbox Code Playgroud)

得到了

Invalid value "\\\\C:\\Users\\myuser\\:\\myuser" for flag --volume: \myuser is not an absolute path
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

jmg*_*esc 44

这是对所选答案的改进,因为答案仅限于c:\ Users文件夹.如果要使用c:\​​ Users之外的目录创建卷,则这是一个扩展.

在Windows 7中,我使用了docker工具箱.它使用Virtual Box.

  1. 打开虚拟框
  2. 选择机器(在我的情况下默认).
  3. 右键单击并选择设置选项
  4. 转到共享文件夹
  5. 包含新的计算机文件夹.

例如,在我的情况下,我已经包括:

**Name**: c:\dev
**Path**: c/dev
Run Code Online (Sandbox Code Playgroud)
  1. 单击并关闭
  2. 打开"Docker Quickstart Terminal"并重启docker机器.

使用此命令:

$ docker-machine restart
Run Code Online (Sandbox Code Playgroud)

要验证它是否有效,请执行以下步骤:

  1. SSH到docker机器.

使用此命令:

$ docker-machine ssh
Run Code Online (Sandbox Code Playgroud)
  1. 转到已共享/已安装的文件夹.

就我而言,我使用此命令

$ cd /c/dev
Run Code Online (Sandbox Code Playgroud)
  1. 检查文件夹的用户所有者.您可以使用"ls -all"并验证所有者将是"docker"

你会看到这样的东西:

docker@default:/c/dev$ ls -all
total 92
drwxrwxrwx    1 docker   staff         4096 Feb 23 14:16 ./
drwxr-xr-x    4 root     root            80 Feb 24 09:01 ../
drwxrwxrwx    1 docker   staff         4096 Jan 16 09:28 my_folder/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将能够为该文件夹创建一个卷.

您可以使用以下命令:

docker create -v /c/dev/:/app/dev --name dev image
docker run -d -it --volumes-from dev image
Run Code Online (Sandbox Code Playgroud)

要么

docker run -d -it -v /c/dev/:/app/dev image
Run Code Online (Sandbox Code Playgroud)

这两个命令对我有用.我希望这会有用.

  • 非常感谢你!!这很适合我;-) (2认同)

Ant*_* O. 29

这实际上是项目的一个问题,有2个工作解决方法:

  1. 创建数据卷:

    docker create -v //c/Users/myuser:/myuser --name data hello-world
    winpty docker run -it --rm --volumes-from data ubuntu
    
    Run Code Online (Sandbox Code Playgroud)
  2. 直接在docker主机中进行SSH:

    docker-machine ssh default
    
    Run Code Online (Sandbox Code Playgroud)

    从那里做经典:

    docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
    
    Run Code Online (Sandbox Code Playgroud)


kla*_*hin 7

在 Windows 7 上,简单地使用双斜杠对我来说很有效:

docker run --rm -v //c/Users:/data alpine ls /data/
Run Code Online (Sandbox Code Playgroud)

摘自这里: https: //github.com/moby/moby/issues/12590


Jas*_*aat 6

截至2016年8月,Docker for windows现在直接使用hyper-v而不是virtualbox,所以我认为它有点不同.首先在设置中共享驱动器然后使用C:驱动器号格式,但使用正斜杠.例如,我创建了一个H:\t\REDIS目录,并且能够/data使用以下命令将其安装在容器中:

docker run -it --rm -v h:/t/REDIS:/data redis sh
Run Code Online (Sandbox Code Playgroud)

相同的格式,使用驱动器号和冒号然后转发斜杠为路径分隔符工作从Windows命令提示符和git bash.

我发现这个问题谷歌搜索找到答案,但我找不到任何有用的东西.事情似乎没有错误被抛出,但我只是看不到主机上的数据(反之亦然).最后,我仔细检查了设置并尝试了它们显示的格式:

在此输入图像描述

首先,你必须在这里的设置中将整个驱动器共享到docker vm,我认为这使得"docker-machine"vm以对该驱动器的hyper-v访问运行.然后你必须使用那里显示的格式,这似乎只存在于这一个图像中,并且没有我在网上找到的文档或问题:

docker run --rm -v c:/Users:/data alpine ls /data
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这只是"Docker for Windows"的情况,仅在Windows 10和Windows Server 2016上受支持. (2认同)

Grz*_*jos 6

如果您正在寻找能够解决所有Windows问题并使其以与Linux相同的方式在Windows操作系统上运行的解决方案,请参见下文。我对此进行了测试,它在所有情况下均有效。我也在展示如何获得它(步骤和思考过程)。我还写了一篇有关使用Docker并在此处处理Docker问题的文章。

解决方案1:使用VirtualBox(如果您认为这不是一个好主意,请参阅下面的解决方案2)

  • 打开VirtualBox(您已经将其与Docker工具一起安装)
  • 创建虚拟机
  • (这是可选的,您可以跳过它并从VM转发端口)创建第二个以太网卡-桥接,这样它将从您的网络接收IP地址(它将具有docker计算机一样的IP)
  • 安装超过1年的Ubuntu LTS
  • 安装泊坞窗
  • 将共享目录添加到虚拟机并自动挂载项目目录(通过这种方式,您可以从Ubuntu上访问项目目录),但仍然可以在Windows中工作
  • 完成了

奖金:

  • 一切都与Linux上的工作方式相同
  • 随时暂停/取消暂停dockerized环境

解决方案2:使用VirtualBox(这与解决方案1非常相似,但它也显示了思考过程,这在解决类似问题时可能会很有用)

  • 读到有人将文件夹移动到/ C / Users / Public,并且可以正常工作https://forums.docker.com/t/sharing-a-volume-on-windows-with-docker-toolbox/4953/2
  • 尝试一下,意识到对您而言这没有多大意义。
  • 在此处阅读整页https://github.com/docker/toolbox/issues/607并尝试页面上列出的所有解决方案
  • 找到此页面(您正在阅读的页面),然后尝试其他评论提供的所有解决方案
  • 查找某个地方的信息,该信息可以设置COMPOSE_CONVERT_WINDOWS_PATHS = 1环境变量来解决此问题。
  • 几个月不再寻找解决方案
  • 返回并再次检查相同的链接
  • 深深的哭泣
  • 感受启蒙时刻
  • 打开VirtualBox(您已经将其与Docker工具一起安装)
  • 使用第二个以太网卡-桥接创建虚拟机,这样它将从您的网络接收IP地址(它将具有类似于docker计算机的IP)
  • 安装最新的Ubuntu LTS(不早于几个月)
  • 请注意,自动挂载并没有真正起作用,并且集成已损坏(例如剪贴板共享等)。
  • 删除虚拟机
  • 出去喝一杯
  • 租用昂贵的汽车并在高速公路上高速行驶
  • 摧毁汽车并死亡
  • 在电脑前重生
  • 安装超过1年的Ubuntu LTS
  • 尝试运行docker
  • 请注意,它尚未安装
  • 通过apt-get install docker安装docker
  • 安装建议的docker.io
  • 尝试运行docker-compose
  • 请注意,它尚未安装
  • 易于获取安装docker-compose
  • 尝试使用docker-compose运行您的项目
  • 注意它是旧版本
  • 检查您的功率水平(应该超过9000)
  • 搜索如何安装最新版本的Docker并找到官方指南https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • 卸载当前的docker-compose和docker.io
  • 使用官方指南https://docs.docker.com/install/linux/docker-ce/ubuntu/安装docker
  • 将共享目录添加到虚拟机并自动挂载项目目录(通过这种方式,您可以从Ubuntu上访问项目目录,因此您可以运行任何docker命令)
  • 完成了


Tho*_*ran 5

尝试这个:

  1. 打开Docker 快速入门终端。如果它已打开,请运行$ cd ~以确保您位于 Windows 用户目录中。
  2. $ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu

如果错误是由于拼写错误造成的,它将起作用。您将得到一个ubuntu在您的用户目录中命名的空文件夹。windows您将在 ubuntu 容器中看到该文件夹​​及其名称。