1楼:春谔釉
不分场景而直接比对vagrant和docker是不恰当的!在一些简单场景中,它们两款产品作用是重复的,但在场景中,它们两款产品无法相互替代。事实上,vagrant抽象度比docker更高,因此直接用vagrant同docker相比较是不恰当的。
而把vagrant同boot2docker(一款运行docker最小的内核)进行比较似乎更加恰当。 vagrant为了支持开发,在启动虚拟机环境时启动了很多的应用和服务。vagrant可以在virtualbox,vmware上面运行(docker无法执行)。
vagrant也可以在aws,openstack这些云环境中运行。即便你使用了docker的容器,vagrant同样也没问题。vagrant可以自动install,pulldown,build,rundockercontainers。
比如在vagrantv1.6版本中,vagrant集成了docker-baseddevelopmentenvironments,因此vagrant可以在windows,mac和linux上面提供docker服务。 vagrant没有想替代docker的想法,相反它还包含了docker的一些特性。
如果我们从逻辑层面来比较vagrant和docker的话,那么: 1、docker只能执行docker所定义的容器。 2、docker缺乏灵活的隔离方案(docker只能运行在linux主机环境中)。
如果我们从production和ci层面来比较,那么docker就无法与vagrant相比了:vagrant没有上面的约束条件,而docker必须依赖它们。 如果你的项目必须使用docker的容器,同时只能部署在linux主机中。
这个时候docker的确是一个不错的选择。除此之外,我就看不到使用docker的优势了,相反你还浪费了vagrant很多的优点:vagrant可以支持多种虚拟环境,例如virtualbox,vmware,aws,openstack等等。
无论你使用何种虚拟环境,vagrant都可以顺利执行起来。如果你使用了docker,也可以在vagrant中顺利安装docker。vagrant可以降低项目复杂度。
或者换个说法:你只需要考虑如何执行你的项目就可以,而不论这个项目是用的docker还是什么别的。在未来,如果出现了docker的竞争者,那么vagrant也可以顺利执行它。
vagrant可以运行在多个主机环境中,windows(xp以上),mac(10.5以上),linux(2.6内核版本以上)。
如果你使用了docker,那么vagrant也可以在上面三种操作系统之上运行你的docker。vagrant可以更好的配置网络和文件共享。比如:
vagrant可以给一个vm配置静态ip和端口数据**。不论你使用的virtualbox还是vmware,vagrant都可以很好的完成配置。对于文件共享来说,vagrant提供了多种文件挂载方案供你考虑。
如果你使用了docker,那么这些事情就都需要你亲自动手来做了。vagrant1.6中集成了docker-baseddevelopmentenvironments。
所以在mac和windows环境中,vagrant会自动启动一个虚拟机来执行docker,这样就达到了docker的跨平台化。而背后例如网络,文件等等操作都是vagrant默默完成的。 下面两点是我听到docker可以替代vagrant的声音:
"docker需要移动的数据很少"的确,docker有这个特点(应该指的是docker采用的ufs,导致docker每次变动所需的数据很少--笔者猜测)。但是当你在每个项目都使用docker,或者在每个项目的现在,将来都使用docker时,你就会发现docker所产生的数据并不少。而如果你使用vagrant,那么只需要移动一次就可以完成。
(原文:"itisles**ovingparts"-yes,itcanbe,ifyouusedockerexclusivelyforeveryproject.eventhen,itissacrificingflexibilityfordockerlock-in.
ifyoueverdecidetonotusedockerforanyproject,past,present,orfuture,thenyou'llhavemoremovingparts.ifyouhadusedvagrant,youhavethatonemovingpartthatsupportstherest)."docker启动非常快",当使用docker启动容器时,它比其他虚拟机启动的都快。
但是我要说的是,目前从产品化角度分析所有vagrant主机基本都是启动一次,然后不再停机。如果从快速部署开发环境来说,docker这个特性真的是非常好。 所以,我们现在可以得知vagrant和docker是有很大区别的,直接比较这两个是不正确的。
对于开发环境来说,vagrant是一种更为抽象,更为通用的解决方案。docker所能提供的场景只是vagrant所支持的特殊场景之一。 在一些极端案例场景下,docker完全可以替代vagrant。
但在的场景下,这是错误的。同时vagrant也不会封锁你使用docker。 针对mitchell的这些解释,hykes写出了下述的论点:
如果你仅仅是想管理虚拟机,那么你应该使用vagrant。如果你想快速开发和部署应用,那么应该使用docker。 vagrant是一款管理虚拟机的工具,而docker是一款通过将应用打包到轻量级容器,而实现构建和部署的工具。
两者适用范围不同。一个容器就是一个包含了应用执行所依赖的数据(包括lib,配置文件等等)。它可以保证应用在一个可重复的环境中随时执行。
有了这个容器,就可以很简单的构建你的容器也可以随时随地的进行部署。 docker只能在linux上面执行是一个很大的误区!事实上,docker可以在mac和windows上面安装。
如果你在mac上面安装docker,那么会有一个大概25mb的精简linuxvm来充当mac和docker直接的交流者。一旦docker安装完成后,就可以使用同样的命令进行操作了。这样,世界一下就美好了:
你通过轻量级的容器可以更好的测试和开发你的应用,并且很容易的将这些应用进行分发(比如通过ponents是最底层的原型。在vagrant中machines,blockdevices,andsshkeys是最底层的原型。vagrant工作在系统底层,它同另外一个vagrant容器交互的方式只有把它当做一个可以"boot"和"loginto"的机器。
因此,你可以在docker上面安装插件后,执行"vagrantup"命令后等待美好的事情发生。其次,可锁定的环境参数(thelock-inargument)。""ifyouusevagrantasanabstraction,youwillnotbelockedintodocker!
"站在管理虚拟机的vagrant角度上面看,这句说没有错:docker不是另外一个独立的容器。像ec2和vmware一样,我们要避免创造一个和其它工具相**的东西。
docker对宿主机没有任何要求,它允许你通过轻量级的容器在任意地方进行部署。在你部署应用时,不需要考虑应该部署到什么环境中。比如说:
你可以在其他人提供的主机(很可能上面已经部署了ec2或者vagrant)上面部署应用。 所以最后可以说:vagrant适合用来管理虚拟机,而docker适合用来管理应用环境。
mac 怎么安装指定版本的vagrant
2楼:匿名用户
vagrant是一个基于ruby的工具,用于创建和部署虚拟化开发环境。docker 是一个开源的应用容器引擎,开发者可以打包他们的应用到一个可移植的容器中,然后发布到 linux 上,也可以实现虚拟化。
虚拟化: 其实就是因为云计算的催生的技术,目的是让运行在上面的应用程序觉得自己独占所有的资源。说白了就是资源管理/隔离和namspace的隔离/mitchellh/vagrant/archive/v1/dotcloud/docker/files/precise64work :
forwarded_port, :host => port, :guest => port
endend什么意思呢?其实你在本机的环境变量设置了forward_docker_ports,默认就会把49000/dongweiming/flask_reveal/archive/v1.0.
tar.gz #这是我提供的release版本
# 解压,进入目录下 格局需要安装依赖pip install -r requirements.txt
# 加'-run'可以运行你想的某种/些服务,设置内存,主机名,端口**,dns,环境变量等
docker logs $web_worker #可以查看manage.py已经启动了
web_port=$(docker port $web_worker 5000) #使用虚拟机的一个端口映射到这个容器的5000端口
127.0.0.1:$web_port #好吧 你可以通过本机访问了
vagrant怎么配置 vmware 环境
3楼:终身追求
实际上vagrant只是一个让你可以方便设置你想要的虚拟机的便携式工具,它底层支持virtualbox、vmware甚至aws作为虚拟机系统!
如何访问vagrant 搭建的服务器环境
4楼:张包子
做web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的windows版,甚至是一键安装包,但很多时候和windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是linux,常常还要面临着开发和部署环境不一致,上线前还要大量的调试。更要命的是,如果有很多机器需要装的话,那就真是一个灾难了。
windows下玩linux少不了虚拟机,但装系统依旧是相当费事。在现在什么都在自动化的今天,vagrant就是这么一个神器,基于ruby开发,使用开源 virtualbox 作为虚拟化支持,可以轻松的跨平台部署。