猿问
下载APP

请问该如何理解VirtualBox,Vagrant,Docker这几种技术的关系?

如何理解VirtualBox,Vagrant,Docker这几种技术的关系


胡子哥哥
浏览 76回答 4
4回答

慕的地2183247

命令行的全部价值就在于 “自动化”->“可重复”手工点点点半天方便还是直接 "vagrant init precise32; vagrant up; vagrant ssh" 方便?把左边引号里面的东西粘贴到命令行里一回车,执行完毕你已经有一个运行起来的标准机器了,什么手工操作能比?赞同2反对,不会显示你的姓名为了些许的便利,装了一个大坨在机器上,持续占用浪费大量CPU资源,简直是给自己添堵。另外,配置开发环境简直不叫事,分分钟搞定。vagrant适合大型的且菜鸟较多的团队。赞同1反对,不会显示你的姓vagrant 比 virtualbox 等虚拟机软件高阶vagrant 会呼叫 virtualbox 等为其服务若要更深入了解差异,可将 vagrant 与 vboxmanage (by virtualbox)命令的参数与功能做一比较对于服务器,没有图形界面,virtualbox 怎么点?使用 virtualbox headless 启动,你试试配置端口转发和文件夹挂载,那参数表的长度。vagrant 本身是 DSL 语言。对 virtualbox headless 进行操作,让配置更人性化,把冗长的命令简化了,把大部分参数配置在可读性很强的配置文件中,使用简单的命令就可以完成操作。因为今天刚刚接触vagrant,我来试着描诉一下,不对之处还请指正。我们开发的时候,面临的一个大问题是,环境不同意,最常见的就是:哎呀,在我机器上没问题,怎么在你这就不能跑了。可能配置不一样,或者缺少某个依赖。多人合作或者跨平台开发很可能遇到这些问题。那么有没有办法统一开发环境呢?vagrant就是做这个的,配置好了开发环境,打包到一个.box 文件(或者直接使用别人打包好到.box 文件),这就是一个虚拟机,下次换环境的时候,直接使用这个虚拟机开发就可以了。这就是vagrant的方便之处。所以vagrant 依赖于virtualbox 或者 vmware等虚拟机软件。还有更多的功能我还没很深的体会,所以先说这么多:)- Vagrantfile 可以清楚描述你希望这台 VM 做的事情(内存数,IP 地址,第一次启动时的 Puppet 部署,端口转发)- Vagrantfile 的变化可以用 git 追踪- 同时启动 N 台搭建模拟集群非常方便一般折腾用virtualbox,频繁折腾用vagrant1. virtualbox的共享目录/端口映射单独配置很麻烦,用vagrant极为方便,没有用vagrant之前,我甚至不知道vb有这两个功能2. vagrant 提供了一堆 mini ubuntu iso,这个在前2年非常稀有3. 而且这些iso里面的virtualbox tools都帮你安装好了,很方便vagrant还包括OS起来之后的provision,比如我用git维护自己的vagrant配置,无论用公司pc还是自己的mac,通过vagrant up就能把自己的开发环境全部搭好。尤其涉及到你的开发平台为了跑特定程序需要起各种服务的时候,vagrant简直太有用了。而且用vagrant管理的时候,还可以把对应的配置share给测试,这样别人帮你做测试的时候就能省掉很多环境搭建的工作,而且不用担心测试环境跟你开发环境有差别。Vagrant 是一个可创建轻量级、高复用性和便于移植的开发环境的工具。在非专业人士眼里,这意味着Vagrant抛弃开发环境中所有让人头痛的设置代之为了一个单一的配置文件,你可以选择你的服务器所需要的特性予以保留。你将不会再被XAMMP,手动配置虚拟环境,或者使用FTP远程编辑所卡住。实际上使用 Vagrant也需要虚拟机,当即使用Vagrant打包系统后会发现系统里面有一个Vagrant的进程,只是说你可以使用Vagrant的一些命令简单的操作虚拟系统,Vagrant的目的在于有一个统一的环境,不会出现“在我的电脑上没有问题,怎么你那里不行”这样的问题。实际上还是建议直接使用虚拟机,我用过vagrant搭建环境,但最后还是不如直接使用虚拟机爽

犯罪嫌疑人X

virtualbox 就是传统的虚拟机方式,直接在程序层面,模拟一个硬件环境,模拟环境内的程序和模拟的硬件环境做交互,再由虚拟机软件把模拟硬件的调用转换为外部程序指令去和硬件再交互来工作。vagrant 等于就是一个辅助工具,让你更好的制作 virtualbox 虚拟机里面的系统以及方便的与其交互等等工作。docker 等于是脱离了 virtualbox 的虚拟机模拟硬件再转换成指令继续和真实硬件交互操作的额外步骤。应用程序直接就能使用自己所处计算机的真实硬件,运行效率更高。通过 docker 软件的隔离封装机制来让程序有自己独立的空间。关系层面虚拟机和这种封装没啥共通点,但是也都是把程序独立出来运行的办法。你可以认为虚拟机靠模拟的硬件进行隔离操作,docker 是靠模拟一套函数接口进行隔离操作。

至尊宝的传说

 vagrant 是一个非常好用的工具,可以用它来在单台物理机器编程管理多个虚拟机(vms)。其支持原生VirtualBox,并同时提供了对VMware Fusion、Amazon EC2虚拟机集群的插件支持。  vagrant提供了极易使用、基于Ruby的内部DSL,允许用户使用它们的配置参数定义一个或多个虚拟机。另外,对于自动部署,vagrant支持多种机制:可以使用puppet,chef或者用于在vagrant配置文件中定义的所有虚拟机上自动安装软件程序和配置的shell脚本等。  所以,使用vagrant可以在运行着多台vm的系统上定义复杂的虚拟框架,是不是很酷?  vagrant的典型使用案例是以简单并且一致的方式构建工作或者开发环境。在Eligotech(原作者公司)公司里,开发人员正在开发一个产品,目标是让用户简单的使用Apache Hadoop、CDH(Cloudera的开源版本)。开发人员经常是为了测试需要在机器上安装hadoop环境。他们发现vagrant在这方面是一个非常便利的工具。

慕村9548890

技术栈只是普通LAMP,我不建议引入docker,vagrant,生产环境部署或许有一点用,但也只是docker,vagrant基于virtualbox,帮不上多少忙,复用率高不到哪里去。技术栈复杂到一个新人架设开发环境非常麻烦的时候,vagrant才能发挥作用,为团队节省时间。开发机多数情况毕竟只需要架设一次。况且通常团队不能假设都很熟悉docker,vagrant,如果没有配套的工作时培训熟悉,恐怕使用这些技术只会反而增加整个上手难度,增加开发成本。LAMP开发环境假设非常简单,工具很成熟,90%的情况也就是apt-get install一下,并不麻烦。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答