从Windows到Boot2docker VM共享文件的最佳方法是什么?

yuy*_*007 31 docker boot2docker

我已经在Windows上准备好了我的代码,但我发现分享给boot2docker并不容易.

我还发现boot2docker无法持久化我的更改.例如,我/temp在重新启动boot2docker后创建了一个文件夹.此文件夹消失,非常不方便.

当你在Windows上有一些代码时,你的方式是什么,但你需要将它们停靠?

---更新---

我尝试更新VirtualBox中的设置并重新启动boot2docker,但它不能在我的机器上运行.

在此输入图像描述

docker@boot2docker:/$ ls -al /c
total 4
drwxr-xr-x    3 root     root            60 Jun 17 05:42 ./
drwxrwxr-x   17 root     root           400 Jun 17 05:42 ../
dr-xr-xr-x    1 docker   staff         4096 Jun 16 09:47 Users/

Tho*_*rig 63

Boot2Docker是一个在VirtualBox上运行的小型Linux VM.因此,在您使用Docker(在此VM中运行)中的文件(来自Windows)之前,必须首先与Boot2Docker VM本身共享您的代码.

为此,您 Windows文件夹在关闭时挂载到VM(此处default假定VM名称为):

C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder \
add default -name win_share -hostpath c:/work
Run Code Online (Sandbox Code Playgroud)

(或者您也可以打开VirtualBox UI并将文件夹挂载到VM中,就像在屏幕截图中一样!)

现在ssh进入Docker Quickstart终端的Boot2Docker VM:

docker-machine ssh default

然后执行mount:

  1. 在VM中创建一个文件夹: sudo mkdir /VM_share
  2. 将Windows文件夹挂载到它: sudo mount -t vboxsf win_share /VM_share

之后,您可以访问C:/workBoot2Docker VM:

cd /VM_share
Run Code Online (Sandbox Code Playgroud)

现在您的代码存在于VM中,您可以将它与Docker一起使用,方法是将其作为卷安装到容器中:

docker-machine ssh default
docker run --volume /VM_share:/folder/in/container some/image
Run Code Online (Sandbox Code Playgroud)

或者在构建Docker镜像时使用它:

...
ADD /my_windows_folder /folder
...
Run Code Online (Sandbox Code Playgroud)

  • 避免额外步骤的一种方法是在VirtualBox中使用Users或/ Users作为共享/文件夹名称.[Boot2Docker自动安装](https://github.com/boot2docker/boot2docker/blob/master/README.md)一些预定义的VBox共享名称.**c/Users**自动映射到C:\ Users但**用户**(不带**c/**)仍然可以映射到VB:GUI中的C:\ work.运行`docker run -v用户:/ code ...`和现在/ Docker容器中的代码映射到C:\ work. (5认同)
  • 它运行mount命令后工作.我无法理解为什么我需要手动运行mount命令,因为我在VM设置中设置了自动安装. (3认同)

Ant*_*ony 8

看到这个答案.

我有Windows 10家庭版与Docker工具箱1.12.2和VirtualBox 5.1.6.

我能够C:\Users在我的容器中成功安装一个文件夹,而无需执行任何额外的步骤,例如docker-machine ssh default.

例:

docker run -it --rm -v /c/Users/antonyj/Documents/code:/mnt ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)

所以让你的文件C:\Users可能是最简单的事情.

如果您不想将文件置于其下C:\Users,则必须按照接受的答案中的步骤操作.