什么是从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
然后执行安装:
- 在虚拟机内创build一个文件夹:
sudo mkdir /VM_share
- 挂载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