如何将Dockerfile和应用程序文件部署到boot2docker

我刚刚开始学习Docker,并试图在Windows上使用boot2docker进行简单设置。 我找不到任何教程或在线样本如何使我的项目文件访问boot2docker虚拟机。

我下载了boot2docker,并成功安装并启动并运行。 我也可以ssh进入并运行hello world docker的例子,所以我知道我有一个在VM中正常工作的Docker安装。

现在,问题是 :如何在boot2docker虚拟机上获得我的Dockerfile和我的应用程序文件,以便构buildDocker容器?

换句话说,我试图从boot2docker虚拟机来做到这一点:

 $ cd /some-directory-from-my-host-os $ docker build . 

我试着按照https://github.com/boot2docker/boot2docker#folder-sharing上的说明设置一个SAMBA共享,并且我可以成功地从Windows连接到\\192.168.59.103\data的共享但是不告诉我如何从boot2docker虚拟机中访问同一个目录。

我觉得答案可能是显而易见的,但是我相信我不是唯一一个会打到这堵墙的人。 谢谢你的帮助!


更新 – 现在内置在boot2docker 1.3中!

由于boot2docker 1.3,已经添加了安装共享文件夹的能力,所以虚拟机可以直接共享你的开发文件夹。 更多信息在这里: https : //github.com/boot2docker/boot2docker#virtualbox-guest-additions

不知道在Windows下是否有帮助。 但是对于Mac来说:

boot2docker与VirtualBox Guest Additions一起使用
如何挂载/用户到boot2docker

https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c

tl; dr使用VirtualBox Guest Additions构build您自己的定制boot2docker.iso(请参阅链接 )或下载http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso并保存到〜/ .boot2docker / boot2docker.iso。

按照当前的进度,假设您的samba容器正在运行,您可以运行以下命令findBoot2docker虚拟机上的/ data文件夹的path:

 $ docker inspect <samba_container_id> 

这将列出容器configuration细节。 接近底部,你应该看到:

“卷”:{

  "/data": "/mnt/sda1/var/lib/docker/vfs/dir/<long_id_here> 

这是你的boot2docker虚拟机/数据path。 简单地进入该文件夹

 $ cd /mnt/sda1/var/lib/docker/vfs/dir/<long_id_here> 

从Windows资源pipe理器中,导航到:

 \\192.168.59.103\data 

现在你可以粘贴/复制/创build一些文件到这个数据文件夹中,你应该看到它们在你的Boot2docker虚拟机的path上: /mnt/sda1/var/lib/docker/vfs/dir/<long_folder_id_here>

恕我直言,最好的办法是使用scp。 正如你可以ssh,你可以使用winscp发送Dockerfile到虚拟机。

ssh文件到您的虚拟机

 dockerfile=$(cat LocalDockerfile) boot2docker ssh "echo '$dockerfile' > Dockerfile" 

把它写在这里http://micahasmith.github.io/2014/11/07/copying-files-into-boot2docker/

在Boot2Docker上更改您的目录“cd / c”,您将能够在Windows上看到用户文件夹。 把你想分享的内容放在你喜欢的用户文件夹中。

我使用这个箱子的stream浪汉: https : //vagrantcloud.com/yungsang/boot2docker

我改变了Vagrant文​​件在Windows上使用(自动)rsync:

  rsync_args = ["--verbose", "--archive", "--delete", "-z"] rsync_auto = true rsync_exclude = [".vagrant/"] config.vm.synced_folder ".", "/vagrant", rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: "rsync"