什么是从Windows共享文件到Boot2docker虚拟机的最佳方式

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

我也发现boot2docker不能执行我的更改。 比如我创build一个文件夹/ temp,重新启动boot2docker后,这个文件夹消失了,非常不方便。

当你在Windows上有一些代码时,你的方式是什么,但是你需要docker化他们?

—更新—

我尝试更新Virtual Box中的设置并重新启动boot2docker,但是在我的机器上无法正常工作。

在这里输入图像说明

 docker @ boot2docker:/ $ ls -al / c
总共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 1docker工作人员4096 Jun 16 09:47用户/

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

为此,在closures虚拟机时,将Windows文件夹挂载到虚拟机上(这里假定虚拟机名称为default ):

 C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder \ add default -name win_share -hostpath c:/work 

(或者,您也可以打开VirtualBox用户界面并将文件夹挂载到您的虚拟机,就像您在屏幕截图中一样!)

现在ssh进入Docker Quickstartterminal的Boot2Docker VM:

docker-machine ssh default

然后执行安装:

  1. 在虚拟机内创build一个文件夹: sudo mkdir /VM_share
  2. 挂载Windows文件夹: sudo mount -t vboxsf win_share /VM_share

之后,您可以访问Boot2Docker虚拟机中的C:/work

 cd /VM_share 

现在你的代码存在于你的虚拟机里,你可以在Docker上使用它,或者把它作为一个卷装入容器中:

 docker-machine ssh default docker run --volume /VM_share:/folder/in/container some/image 

或者在构buildDocker镜像时使用它:

 ... ADD /my_windows_folder /folder ... 

看到这个答案 。

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

所以把你的文件放在C:\Users可能是最简单的事情。

如果您不想将文件放在C:\Users ,那么您必须按照接受的答案中的步骤操作。

使用docker-toolbox,共享目录只能是/c/User。使用docker-toolbox,共享目录只能是/ c / User

无效的目录。 卷目录必须位于Users目录下

在这里input图像说明

 ## 命令在"Docker Quickstart Terminal"中执行Step1&Step2即可。Command in the "Docker Quickstart Terminal" in the implementation of Step1 & Step2 can be. # Step 1. 用命令行添加报错,在VirtualBox图像界面手工添加上的,如上图所示。Add the error in the command line, in the VirtualBox image interface manually add, as shown above. "C:/Program Files/Oracle/VirtualBox/VBoxManage.exe" sharedfolder add default --name "E_DRIVE" --hostpath "e:\\" --automount # Try 1. 只能临时起效,重启VM之后共享失效。Only temporary effect, restart VM after sharing failure. #docker-machine ssh default "sudo mkdir -p /e" # Create a directory identifier, consistent with the windows drive letter #docker-machine ssh default "sudo mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e" # Try 2. 修改/etc/fstab做永久挂载不pipe用,每次重启/etc/fstab内容都会重置。Modify / etc / fstab do not use the permanent mount, each restart / etc / fstab content will be reset #docker-machine ssh default "sudo sed -i '$ a\E_DRIVE /e vboxsf uid=1000,gid=50 0 0' /etc/fstab" # Step 2. 一行命令搞定e盘共享。或者修改`C:\Program Files\Docker Toolbox\start.sh`。参考:https://github.com/docker/machine/issues/1814#issuecomment-239957893 docker-machine ssh default "cat <<EOF | sudo tee /var/lib/boot2docker/bootlocal.sh && sudo chmod u+x /var/lib/boot2docker/bootlocal.sh #!/bin/sh mkdir -p /e mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e EOF " 

然后重启虚拟机,试试这个docker run --name php-fpm --rm -it -v /e:/var/www/html php:7.1.4-fpm /bin/bash

参考:

  • 什么是从Windows共享文件到Boot2docker虚拟机的最佳方式
  • http://hessian.cn/p/1502.html
  • Windows + Boot2Docker,如何添加D:\驱动器可以在Docker中访问?

对不起,我可怜的英语(谷歌翻译),希望这会有所帮助。 顺便说一句,没有降价代码块?

在系统托盘中,你应该有可爱的docker鲸游泳。 右键单击并select设置。

在这里输入图像说明

点击应用。 这将popup凭据对话框,您将需要提供您当前的Windows凭据。 确保你正确地给它。 我也怀疑你可能需要成为一名pipe理员。

要将我们的主机目录(c:\ data)安装在容器中,我们将在运行容器时使用-v(卷)标志。 这里显示一个运行示例。 在这里输入图像说明

我有我的本地docker集装箱centos

docker运行-vc:/ data:/ data centos ls / data