Vmware之vagrant与docker的区别
白羽 2018-12-04 来源 :网络 阅读 3087 评论 0

摘要:本文将带你了解Vmware之vagrant与docker的区别,希望本文对大家学Vmware有所帮助。

    本文将带你了解Vmware之vagrant与docker的区别,希望本文对大家学Vmware有所帮助。


<

首先说说vagrant与docker的区别
vagrant是用来管虚拟机的,而docker是管容器的(如不准确,还望指正)
docker的启动速度当然是无可比拟的,而vagrant当然不是要很docker比启动速度的,vagrant就是管虚拟机的,虚拟机与容器的区别,大家见仁见智。
再来介绍一下vagrant:
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境---百度百科
首先提一个需求,我想批量的创建一批虚拟机,基于不同的镜像,基于不同的系统(这里主要是Linux系统),每个主机拥有若干网卡并分配指定网段及IP。
如果是vmware,我想大多数人想的是不停的点击不同的按钮已完成上面的需求,当然了,如果用pyVmomi也许并不需要太多的人工点击(笔者觉得一步一步的重复点击是很反人类的~)
如果是其他云平台,当然是借助API了,不过我想创建的这一批主机是能像docker一样分发的,比如让每个人在主机的电脑上就能简单的创建所需环境,而在私有云上,每人一套可能就太浪费资源了,每个人公用,又显得不是那么干净。
如果不是以主机为单位,基于docker,将服务应用打散,放置于各个容器,并用docker编排工具如kubernetes,compose什么的来创建也是不错的,不过这里为了突出一下vagrant的便捷就以主机为单位了。
需求继续具体如下,2个app server,2个db server,1个负载均衡lb server
再次之前,简单的vagrant入门一下
vagrant安装
一:安装virtualbox
下载对应的安装包
https://www.virtualbox.org/wiki/Downloads
二:安装vagrant
下载对应的安装包
https://www.vagrantup.com/downloads.html
因为个平台都有对应的安装包,所以安装过程就不做过多介绍
本文主要在window上操作
virtualbox 4.2.36
vagrant 1.8.1
安装完成后应该是这样的

然后之主要用的几个命令,详细说明参考,官方文档:https://www.vagrantup.com/docs/
本文主要说明以下几个选项
box,destroy,global-status,halt,init,package,resume,ssh,status,suspend,up
上面命令总结起来主要分为五个部分
一:按照一定格式打包的vagrant环境文件,类似镜像文件
box
二:虚拟机操作(destroy,halt,init,suspend,up)
销毁,关机,初始化,恢复,挂起,开机
三:打包
package
四:连接
ssh
五:虚拟机状态
status,global-status
在建立一个虚拟机之前,当然需要一个镜像,这里就是以.box为后缀名的box文件,这里可以本地添加或者在线添加
box下载地址://www.vagrantbox.es/
vagrant box list 查看当前box列表
本地添加box,如下
vagrantboxaddcentos6E:\vagrant\box\centos65.box
centos6是我们为自定义的box名字,后面会用到,最后接的是box文件路径
注:建议本地添加时候工作目录与box文件在同一磁盘下,比如C盘,D盘
在线添加box,在线添加的box名称格式为 用户/box名,参考https://atlas.hashicorp.com/boxes/search,如下
vagrantboxaddhashicorp/precise64
或者
vagrantboxadd
https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
查看box列表

现在我们可以初始化一个我们需要的虚拟机了
创建一个工作目录,用于存储相关文件
vagrantinit
会在当前目录创建一个Vagrantfile文件,这个文件告诉vagrant我们要创建一个怎么的虚拟机
这里我们执行
vagrantinitcentos6
将所有注释去除后,主要内容如下
Vagrant.configure(2)do|config|
config.vm.box="centos6"
end
上面的config.vm.box="centos6",主要是说明基于哪个box文件。
然后启动
vagrantup

启动过程如上。
启动之后我们可以直接ssh进去
vagrantssh

关机则是
vagranthalt
挂起
vagrantsuspend
从挂起状态恢复
vagrantresume
整机虚拟机销毁,有点从磁盘上移除的意思
vagrantdestroy
注:上面的命令都得在vagrantfile文件所在目录
然后是查看虚拟机状态
vagrantstatus
查看当前目录下vagrantfile文件对应的虚拟机状态
vagrantglobal-status
查看全局虚拟机状态
注:既然虚拟机,当然能执行快照什么的,请自行探索
入门结束。。。
进入正题
批量创建2个app server,2个db server,1个负载均衡lb server
想必也能看出来,比较照重要的是vagrantfile文件,这个文件告诉vagrant需要执行什么,创建什么。
首先定义每个虚拟机对应的ip及主机名,如下
app_servers={:app1=>['192.168.13.2','192.168.15.3'],
:app2=>['192.168.13.3','192.168.15.4']
}
db_servers={:db1=>['192.168.14.2','192.168.15.5'],
:db2=>['192.168.14.3','192.168.15.6']
}
lb_servers={:lb1=>'192.168.15.2'
}
因为是基于ruby的,所以类似python中的列表,字典的写法什么的稍稍不同,不过也不难看懂,以答案推答案嘛
app-server定义了两个主机app1,app2,并绑定两块网卡的ip地址
db-server如上
lb-server就一个
然后当然是循环了,如果一条一条的说明,也就没必要声明app-servers之类的
app_servers.eachdo|app_server_name,app_server_ip|
config.vm.defineapp_server_namedo|app_config|
app_config.vm.host_name=app_server_name.to_s
app_config.vm.network:private_network,ip:app_server_ip[0]
app_config.vm.network:private_network,ip:app_server_ip[1],virtualbox_inet:true
end
end
主要有两点说明
一:有几个do,就有几个end
二:遍历app-server,用app_servers.each do|app_server_name,app_server_ip|,而其中app_server_name,app_server_ip当然是遍历时候的变量了,对应app-server里面的app1,['192.168.13.2','192.168.15.3']
config.vm.define 定义创建的主机名
app_config.vm.host_name 定义hostname
app_config.vm.network:private_network,ip 定义网卡绑定ip
完整如下
Vagrant.configure(2)do|config|
config.vm.box="centos6"
end
app_servers={:app1=>['192.168.13.2','192.168.15.3'],
:app2=>['192.168.13.3','192.168.15.4']
}
db_servers={:db1=>['192.168.14.2','192.168.15.5'],
:db2=>['192.168.14.3','192.168.15.6']
}
lb_servers={:lb1=>'192.168.15.2'
}
app_servers.eachdo|app_server_name,app_server_ip|
config.vm.defineapp_server_namedo|app_config|
app_config.vm.host_name=app_server_name.to_s
app_config.vm.network:private_network,ip:app_server_ip[0]
app_config.vm.network:private_network,ip:app_server_ip[1],virtualbox_inet:true
end
end
db_servers.eachdo|db_server_name,db_server_ip|
config.vm.definedb_server_namedo|app_config|
app_config.vm.host_name=db_server_name.to_s
app_config.vm.network:private_network,ip:db_server_ip[0]
app_config.vm.network:private_network,ip:db_server_ip[1],virtualbox_inet:true
end
end
lb_servers.eachdo|lb_server_name,lb_server_ip|
config.vm.definelb_server_namedo|app_config|
app_config.vm.host_name=lb_server_name.to_s
app_config.vm.network:private_network,ip:lb_server_ip
end
end
end
启动大概如下

其实一次性启五个,一般的电脑(指4GB)是稍显吃力的,所以要么在自己机房的服务器上玩,要么在稍微好点的主机上玩吧~~~
后记:个人觉得vagrant对于运维还是很友好的,基于命令行的工具才足够酷(个人感觉)~而且一些情况下,我们需要频繁的创建虚拟机去测试,搭建一些服务集群的时候,需要一个轻量,简易,可重复,具有可靠性的环境,而这些,vagrant是能够提供的,比起在vmware或者私有云上创建虚拟机还是更加简单并好用的,    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标系统运维之Vmware频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程