如何在Windows文件和docker容器之间共享文件夹,方法是使用Docker Toolbox挂载简单--volume
命令的卷?
我正在使用" Docker Quickstart 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'.
关注this,我也尝试了
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'.
答案 0 :(得分:44)
这是对所选答案的改进,因为答案仅限于c:\ Users文件夹。如果要使用c:\ Users之外的目录创建卷,则这是一个扩展名。
在Windows 7中,我使用了docker工具箱。它使用Virtual Box。
例如,就我而言,我已经包括:
**Name**: c:\dev
**Path**: c/dev
使用此命令:
$ docker-machine restart
要验证它是否有效,请执行以下步骤:
使用此命令:
$ docker-machine ssh
在我的情况下,我使用此命令
$ cd /c/dev
你会看到这样的事情:
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/
在这种情况下,您将能够为该文件夹创建一个卷。
您可以使用以下命令:
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
这两个命令对我有用。我希望这会有用。
答案 1 :(得分:29)
这实际上是一个issue of the project,有2个工作解决方法:
创建数据卷:
docker create -v //c/Users/myuser:/myuser --name data hello-world
winpty docker run -it --rm --volumes-from data ubuntu
直接在docker主机中进行SSH:
docker-machine ssh default
从那里做经典:
docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
答案 2 :(得分: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
相同的格式,使用驱动器号和冒号,然后路径分隔符的正斜杠同时从Windows命令提示符和git bash工作。
我发现这个问题谷歌搜索找到答案,但我找不到任何有用的东西。事情似乎没有错误被抛出,但我无法看到主机上的数据(反之亦然)。最后,我仔细检查了设置并尝试了它们显示的格式:
首先,您必须在此处的设置中将整个驱动器共享到docker vm,我认为这样可以让#docker-machine' vm在对该驱动器的hyper-v访问中运行。然后你必须使用那里显示的格式,这似乎只存在于这一个图像中,而且没有我在网上找到的文档或问题:
docker run --rm -v c:/Users:/data alpine ls /data
答案 3 :(得分:4)
$ cd ~
以确保您位于Windows用户目录中。$ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu
如果错误是由于拼写错误,它将起作用。您将在用户目录中获得名为ubuntu
的空文件夹。您将在ubuntu容器中看到名为windows
的文件夹。
答案 4 :(得分:4)
如果您正在寻找解决所有Windows问题的解决方案,并使其在Windows操作系统上以与Linux相同的方式运行,请参阅下文。我测试了它,它适用于所有情况。我也展示了我是如何得到它的(步骤和思考过程)。 I've also wrote an article about using Docker and dealing with with docker issues here.
答案 5 :(得分:3)
对于那些喜欢命令行方法的 Virtual Box 的人
1)确保泊坞机未运行
Docker快速入门终端:
docker-machine stop
2)创建共享Windows< - >搬运工机强>
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 Quickstart终端:
(同样,我正在启动一个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
答案 6 :(得分:1)
仅在Windows 7上使用双斜杠对我有用:
docker run --rm -v //c/Users:/data alpine ls /data/
答案 7 :(得分:1)
共享文件夹virtualBox工具箱以及Windows 7和Node.js图像容器
使用... Docker快速入门终端[QST] Windows资源管理器[WE]
让我们开始...
[QST]打开Docker Quickstart Terminal
[QST]停止虚拟机
$ docker-machine stop
[WE]打开Windows资源管理器
[WE]转到virtualBox安装目录
[WE]打开一个cmd并执行...
C:\ Program Files \ Oracle \ VirtualBox> VBoxManage共享文件夹添加“默认” --name “ / d / SVN_FOLDERS / X2R2_WP6 / nodejs” --hostpath“ \?\ d:\ SVN_FOLDERS \ X2R2_WP6 \ nodejs” --automount
在oracle虚拟机中检查是否出现了新的共享文件夹
[QST]启动虚拟机
$ docker-machine start
docker stop nodejs
docker rm nodejs
docker run -d -it --rm --name nodejs -v / d / SVN_FOLDERS / X2R2_WP6 / nodejs:/ usr / src / app -w / usr / src / app node2
docker exec -i -t nodejs / bin / bash
答案 8 :(得分:0)
我解决了!
添加卷:
docker run -d -v my-named-volume:C:\ MyNamedVolume testimage:latest
挂载主机目录:
docker run -d -v C:\ Temp \ 123:C:\ My \ Shared \ Dir testimage:latest