工作当中碰到需求要使用virtual box搭建多个linux虚拟机。将搭建的过程做一个记录。

软件配置:

virtual box 5.1.38+vagrant 1.8.6+win10

一.制作虚拟机镜像

制作虚拟机的镜像有两种方式,一种是通过virtual box中新建虚拟机,采用iso镜像执行常规的安装流程制作一个镜像,还有一个种方式就是利用virtual box+vagrant的组合,通过导入现有的box文件快速生成一个可以运行的虚拟机,然后再对虚拟机进行修改制作镜像。本文采用的是vagrant+virtual box组合的方式。

1.分别安装virtual box和vagrant软件,启动virtual box ,然后打开命令行,切换到工作目录,这里使用的是c:/vagrant/test。

输入vagrant -v,输出版本号,则表示vagrant安装成功。

2.准备现有的box镜像,下载box镜像,本文采用的是ubuntu16的镜像

资源地址:https://c4ys.com/archives/1230

导入镜像

vagrant box add ubuntu16 D:/data/ubuntu16.box

其中 ubuntu16为导入后镜像的name,D:/data/ubuntu16.box为本地镜像的路径。导入后可查看导入的镜像。

在添加了box之后,系统中会生成镜像文件,查看目录C:\Users\Carter\.vagrant.d\boxes(本次安装环境的存放box镜像的目录)

会出现一个ubuntu16的文件夹,进入文件夹里层,可以发现一个Vagrantfile的文件,里面有记录了登录系统的初始账号密码。

3.根据镜像生成虚机实例。

执行 vagrant init 命令,会在当前目录下生成一个虚机的配置文件,Vagrantfile。

打开目录下的配置文件可以看到只有一个配置项config.vm.box=“base”

这个配置项表示虚机实例引用镜像名称。,修改配置项的值与box列表中的镜像名称,即config.vm.box=“ubuntu16”。

然后执行vagrant up启动虚机实例,如果采用默认的配置启动,会报错,提示找不到base镜像,启动成功后如下图:

同时,在virtual的界面上也可以看到一个出现了一个正在运行的虚拟机实例。

重点来关注一下虚拟机实例的网络情况,点击设置->网络,可以看到虚机默认是有一张网卡,网卡的连接方式是NAT,但是界面上面没法看到虚拟机IP网段和虚拟机IP,这里我们配置自定义的NAT类型网络,然后让虚拟机加入该网络,同时为虚拟机设置静态的IP。

系统初始登录的账号密码比较复杂,比避免直接输入密码错误,可以采用粘贴密码的方式,virtual box自带了共享复制粘贴功能,但本次试验没有成功,采用xshell方式远程连接虚拟机登录,修改密码或者设置root账号密码,方便后续的登录操作。

点击网卡的高级->端口转发,可以看到主机的2222端口映射到虚拟机的22端口(ssh登录端口)。

打开xshell工具,配置ssh登录的IP为本机IP,端口为2222,连接,账号密码使用前述Vagrantfile文件中的账号密码,使用xshell登录主要是密码可以方便的复制粘贴,不需要手动输入。登录进去后,设置root账号的密码为简单密码,如123456。即账号密码

root/123456,方便后面登录。然后退出。

点击管理->全局设定,打开全局设定界面,同时切换到网络配置项如下图,可以看到默认是没有预定义的NAT网络,现在手动添加NAT网络。

点击右侧的添加按钮,会添加一条网络记录,再点击编辑弹出网络设置界面,修改网络名称为 vmnet1,默认是采用DHCP自动分配IP的,我们要设置静态IP,取消支持DHCP勾选项,然后点击OK保存。

然后设置虚机实例添加到vmnet1网络,点击设置,再设置界面中选择网络,然后在网络配置中选择连接方式为NAT网络,由于只配置了一个NAT类型的网络,在下册的界面名称会自动出现vmnet1。点击OK保存,就设置了虚拟机网络,但是这时虚拟机还没有IP地址,要启动后,在虚拟机里面配置IP地址。

关闭运行中的虚拟机,在设置->常规设置中将虚拟机重新命名为node1。然后启动虚拟机,让设置生效。这里启动会需要点时间。

启动后,以root账号登录,输入ifconfig,可以看到虚机有一个网口,网口上面还没有配置IP地址

编辑/etc/network/interfaces文件,添加网口enps03的配置如下。

保存退出,然后重启网络:/etc/init.d/networking restart

查看网络:ifconfig,可以看到配置已经生效。

virtual box中的NAT下的虚机不能直接通过IP的22端口做SSH连接,还得通过端口转发的方式连接虚拟机。

点击管理->全局设定,选择网络设置,编辑vmnet1网络。

点击端口转发,配置本机的2222端口映射到当前虚拟机(10.0.2.5)的22端口。

然后利用远程连接工具xshell连接虚拟机,连接配置如下:

登录后查看IP验证下:

以上就完成了一个镜像的制作。

二.由镜像制作虚拟机

由虚拟机镜像制作虚拟机就容易很多,先将制作好的虚拟机镜像关机。

1.右键点击虚拟机,复制,弹出复制配置页面,

选择完全复制虚拟机,同时勾选初始化所有网卡MAC地址,复制。

启动node2虚拟机,登录后修改/etc/network/interfaces,修改enp0s3网口的IP地址为10.0.2.6。保存,然后重启。

然后配置SSH连接,管理->全局设定->网络。在vmnet1中添加端口转发。本机的3333端口映射到10.0.2.6虚拟机。

xshell连接配置主机 127.0.0.1,端口3333,登录以后验证连接的是10.0.2.6机器如下:

同理克隆其他需要的虚拟机。即可以创建多台虚拟机组建集群实验环境。

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐