Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。docker 是一个开源的应用容器引擎,开发者可以打包他们的应用到一个可移植的容器中,然后发布到 Linux 上,也可以实现虚拟化。
虚拟化: 其实就是因为云计算的催生的技术,目的是让运行在上面的应用程序觉得自己独占所有的资源。说白了就是资源管理/隔离和namspace的隔离.
Hypervisor: 这是虚拟化的一种,也就是操作系统上面在运行一个或者多个操作系统,这个底层的操作系统系统就是hypervisor.它来管理和分配那些创建的操作系统 所需要的资源.这种虚拟化也可以分成2种:原生(直接将虚拟的操作系统运行在裸机上,比如kvm和xen,确定是需要特定的硬件支持)和宿生(软件层面的,比如我这里 会用到的Virtualbox). 但是有个问题:运行了多个操作系统实例,开销很大,而且启动一个系统就要拿走一部分资源
LXC(LinuX Containers):是一种操作系统层面的虚拟化技术.它只运行一个内核,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点, 分配特定比例的cpu时间、IO时间,限制可以使用的内存大小等.遗憾的是LXC只支持linux,不支持BSD,OSX,WINDOWS,所以我下面在我的Mac里面是通过 Virtualbox生成容器的. 至于为什么选择LXC,我想除了开销小之外,就是方便快速的部署
Docker: 是一种增加了高级API的LinuX Container(LXC)技术,来至dotcloud, 官网这样描述:提供了能够独立运行Unix进程的 轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式.在Infoq你能找到主要特性,当然,3个月过去了,它肯定成长了很多
Vagrant: 是一个ruby语言的工具. 用于创建和部署虚拟化开发环境. 我们使用Vagrant在VirtualBox的虚拟机里安装docker
什么系统来使用docker的一些想法
用OSX本来就有点…额,太绕. 其实docker已经被ubuntu官方支持,添加docker的PPA然后安装.
还可以把安装流程封装成Dockfile,用git做版本控制
谁需要学习本文
我想运维同学会更需要一些.或者硬件资源缺乏的程序员们
程序员倒是可以学习把开发的应用放在虚拟机里面做成模板,可以使用vagrant管理
为什么这么说?要是为了不污染开发环境,我们python已经有个virtualenv+virtualenvwrapper.
对我这种程序员来说,我不需要那么多虚拟机,其次是我还有物理机的测试环境,并且我们线上的操作系统相当一致. 这篇文章就是为了了解docker
安装Vagrant和Virtualbox
vagrant就是基于Virtualbox的,你可以使用gem安装
gem install vagrant
我喜欢最新版,手动安装的
wget https://github.com/mitchellh/vagrant/archive/v1.2.2.tar.gz
tar zxvf v1.2.2.tar.gz
cd vagrant-1.2.2
sudo gem install bundler
bundle install
rake install
从github克隆docker
git clone https://github.com/dotcloud/docker.git
cd docker
vagrant up
‘vagrant up’其实就是调用了virtualbox的终端接口打开你的虚拟机,类似下面的命令, 而不是你在界面点击’开始’
/Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment docker_1373340358 --startvm 6e4ea638-77b2-400d-9fbe-3b4e8d4fba21 --vrde config
这时候你在virtualbox的界面可以看见启动的虚拟机,名字就是上面的docker_1373340358
在docker目录下已经有个一个Vagrantfile文件,你想想Makefile,意思很类似,其实为什么要这个docker源, 很大原因就是要用这个文件,因为它已经配置好了默认你要是用的box文件,类似执行了下面的命令
vagrant init ubuntu ://files.vagrantup.com/precise64.box
.... #一些配置
vagrant up
首先说这里可能会报错,类似这个网页粘贴的内容, 内容有类似提示
INFO interface: error: There was an error executing the following command with
VBoxManage:
["import", "C:/Users/kwladyka/Desktop/My Dropbox/Vagrant/vagrant.d/boxes/base/bo
x.ovf"]
For more information on the failure, enable detailed logging with
VAGRANT_LOG.
解决办法是:
cd /Users/dongwm/.vagrant.d/boxes/ubuntu/virtualbox/
openssl sha1 *.vmdk *.ovf > box.mf
cd -
但是官网说这样会自动帮我们增加docker的PPA,更新源再安装lxc-docker,可是没有出现,我后来都是自己去执行的,如下
为什么用这个box?当然了其它系统都可以,你可以下载其它的虚拟机镜像,再安装其系统下的lxc-docker(我会准备一篇gentoo版本的文章)