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

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

我使用“Docker快速入门terminal”,当我尝试这个:

 winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu 

我有这个错误:

 Invalid value "C:\\Users\\myuser\\:\\myuser" for flag --volume: bad mount mode specified : \myuser See 'docker run --help'. 

在此之后,我也试了一下

 winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu 

得到了

 Invalid value "\\\\C:\\Users\\myuser\\:\\myuser" for flag --volume: \myuser is not an absolute path See 'docker run --help'. 

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

  1. 创build数据卷:

     docker create -v //c/Users/myuser:/myuser --name data hello-world winpty docker run -it --rm --volumes-from data ubuntu 
  2. 直接在Docker主机中进行SSH连接:

     docker-machine ssh default 

    从那里做一个经典的:

     docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu 

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

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

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

例如,我的情况包括:

 **Name**: c:\dev **Path**: c/dev 
  1. 点击并closures
  2. 打开“Docker快速入门terminal”并重新启动泊坞机。

使用这个命令:

 $ docker-machine restart 

要validation它的工作,请按照下列步骤操作:

  1. SSH到docker机器。

使用这个命令:

 $ docker-machine ssh 
  1. 转到您共享/装载的文件夹。

在我的情况下,我使用这个命令

 $ cd /c/dev 
  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/ 

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

你可以使用这些命令:

 docker create -v /c/dev/:/app/dev --name dev image docker run -d -it --volumes-from dev image 

要么

 docker run -d -it -v /c/dev/:/app/dev image 

两个命令都适用于我。 我希望这会有用。

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

 docker run -it --rm -vh:/t/REDIS:/data redis sh 

相同的格式,使用驱动器号和一个冒号,然后从Windows命令提示符和git bash的path分隔符正向斜杠。

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

在这里输入图像说明

所以首先,你必须将整个驱动器分享给docker vm,我认为这给了docker-machine虚拟机运行在hyper-v上。 那么你必须使用那里显示的格式,这似乎只存在于这一个图像,没有任何文档或问题,我可以在网上find:

 docker run --rm -vc:/Users:/data alpine ls /data 

尝试这个:

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

如果错误是由于错字,它将工作。 您将在用户目录中获得一个名为ubuntu的空文件夹。 你会在你的Ubuntu容器中看到这个文件夹的名字。

对于那些使用Virtual Box的人更喜欢命令行方式

1)确保docker机没有运行

Docker快速入门terminal:

 docker-machine stop 

2)创build共享Windows < – >docker机

Windows命令提示符:
(修改以下内容以适合您的场景。我通过Dropbox从同步的目录中提供Apache httpd容器。)

 set VBOX=D:\Program Files\Oracle\VirtualBox\VBoxManage.exe set VM_NAME=default set NAME=c/htdocs set HOSTPATH=%DROPBOX%\htdocs "%VBOX%" sharedfolder add "%VM_NAME%" --name "%NAME%" --hostpath "%HOSTPATH%" --automount 

3)启动docker机,并将卷装入新的容器中

Docker快速入门terminal:
(同样,我正在启动一个Apache httpd容器,因此该端口暴露。)

 docker-machine start docker run -d --name my-apache-container-0 -p 80:80 -v /c/htdocs:/usr/local/apache2/htdocs my-apache-image:1.0 

我解决了它!

添加音量:

docker运行-d -v my-named-volume:C:\ MyNamedVolume testimage:latest

挂载主机目录:

docker run -d -v C:\ Temp \ 123:C:\ My \ Shared \ Dir testimage:latest

嗨,我尝试在这个网页上的每一件事。 我正在与docker工具箱的Windows 7工作,更新到Windows 10是不是现在的公司的选项。 我试图挂载文件夹C:/ nuget,但问题是docker工人只允许在Windows的“用户”(c:/用户/ YourUser /)文件夹中安装目录。