使用 Vagrant 和 Docker 在一个 VM 中进行开发
理由
1. 用Vagrant开发很酷-一个项目/组件一个VB
2. 用Vagrant开发很垃圾-缓慢的Chef/Puppet/Ansible,多个巨大的VM,遍地重复的软件。
3. Docker带来独立的仅有一个VM的VM盒子。
4. CoreOS内整合了docker, 产品发布时候会做得很完美。
5. 开发者开心!编码和发布太容易了。
像我,你可以(或不可以)喜欢用Vagrant发布。为一个项目存储使用多个VM是不可思议的: 像Ansibe之类的工具意味着你的VM将总是反映产品的环境。
假如你是揽活的人或者有许多项目,然而,可能是你有几十个Vagrant盒子在你的dev文件夹,慢慢吸收上亿磁盘空间。这是vagrant 垃圾的地方。。。提别是有多个小SSD的时候。
进入:Docker. 一个从一个机器上管理容器的开源的工具。为所有我们的来自一个VM的项目,我们将使用容器作为“迷你vagrants".我假设你这里用的是Mac-我不了解windows.
让我们投入docker!
步骤一:设置CoreOS
我们要使用CoreOS和Vagrant来安装Docker, 取代Docker推荐的Ubuntu vagrant 文件安装。Screw的建议。
为什么用CoreOS?
CoreOS是一个雄心勃勃的旨在简单、可伸缩服务部署的linux发行版。它是轻量级的,并且自带Docker的预安装。它的目的是让服务Docker-based应用变得容易。这就是为什么选择该OS(系统)的原因-文件体积小、建议的安装方式都值得称赞!所以、我真的想去实测一下它。
Note:CoreOS在alpha中已被创建。这意味着它在SSH回话中,可能发生随机重启的现象,但从长远的角度来看,希望是有帮助的。这个是需要注意下的。
安装
你从CoreOS的Github的仓库中进行安装,CoreOS团队做了一个非常棒的工作。
你只需要按照下面的要求去做:
安装1.3.1版本以上的Vagrant和4.0版本以上的VirtualBox。
你可以通过vagrant --version命令检查你的vagrant版本,如果需要下载新的版本可以从vagrant的官网上去下载。下载已经提供含有你开发使用根目录文件夹的CoreOS vagrant文件。在Vagrant中会安装CoreOS。
vagrant的文件在这里。添加端口转发到Vagrant的web服务器:
命令是:config.vm.network :forwarded_port, guest: 80, host: 8080需要注意的是默认情况下共享文件夹没有启用:
可以通过下面的命令开启你vagrant文件的共享文件夹:
config.vm.network "private_network",
ip: "10.1.2.3" *config.vm.synced_folder ".",
"/home/core/share", id: "core",
:nfs => true,
:mount_options => ['nolock,vers=3,udp']*
我们已经修改了IP地址,CoreOS提供了专用网络:他们使用的IP地址是在公共地址的范围内(即别人公开的可访问的机器)。整个10.X.X.X的IP地址段都是私有的,这样的话可以避免冲突。
你可能已经清楚了安装步骤:我们已经创建了一个vagrant文件,添加了连接CoreOS分布式的URL,设置了共享文件夹的网络。和其他Vagrant的配置步骤相似,只是没有其他的Chef/Puppet/Ansible。
CoreOS已经预先安装好了docker,所以不需要马上做一些配置和软件的安装。