使用Vagrant创建CentOS虚拟机

Vagrant是一款由HashiCorp公司提供的,用于快速构建虚拟机环境的软件。本节我们将使用Vagrant结合Oracle VM VirtualBox快速地在win10环境下构建CentOS7虚拟机。在此之前需要先安装好 VagrantVirtualBox

构建CentOS7虚拟机

https://app.vagrantup.com/boxes/search下搜索centos:

QQ截图20190328162307.png

然后在win10任意盘符下创建vagrant_vm目录(注意目录最好不要有中文和空格),然后在该目录下使用cmd执行vagrant init centos/7命令:

QQ截图20190328201613.png

然后执行vagrant up启动(这时候最好也打开VirtualBox):

QQ截图20190328202035.png

构建完毕,这时候VirtualBox的列表里会出现一台正在运行的虚拟机:

QQ截图20190328202353.png

这就是我们刚刚通过Vagrant构建的CentOS7虚拟机了。

如果当你执行vagrant up命令后,虚拟机文件下载非常的慢的话,可以使用下面这种方式来构建:

在上面的日志中可以找到这么一行:

1
Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1902.01/providers/virtualbox.box

后面这个URL就是下载地址了,将它黏贴到迅雷等下载工具下载即可。然后将下载好后的xxx.box文件复制到vagrant_vm目录下,并且重命名为centos7.box(删除centos7.box之外的文件和目录,只保留centos7.box一个文件)。

接着运行vagrant box add -name 'centos/7' centos7.box命令:

QQ截图20190328203659.png

添加成功后执行vagrant init centos/7初始化:

QQ截图20190328203846.png

初始化成功后执行vagrant up启动:

QQ截图20190328204151.png

构建成功,效果和一开始在线下载构建是一样的。

连接虚拟机

我们先用vagrant status命令查看一下虚拟机的状态:

QQ截图20190328210130.png

可以看到虚拟机是运行中的状态,我们可以执行vagrant halt来关闭虚拟机:

QQ截图20190328210245.png

QQ截图20190328210316.png

启动虚拟机的命令为vagrant up,我们也可以使用vagrant suspend命令来暂停运行中的虚拟机,以保持它的运行状态:

QQ截图20190328210643.png

QQ截图20190328210742.png

暂停后可以使用vagrant resume命令来恢复虚拟机:

QQ截图20190328211115.png

连接正在运行中的虚拟机的命令为vagrant ssh

QQ截图20190328211400.png

重启虚拟机使用的命令为vagrant reload。如果你不想要这个虚拟机的话可以使用vagrant distroy命令进行销毁。

目录共享

Vagrant的根目录(就是我们一开始创建的vagrant_vm)和虚拟机里的/vagrant目录是共享的。我们在vagrant_vm目录下新建一个hello.txt文件,内容为hello:

QQ截图20190328212914.png

然后连接虚拟机,查看虚拟机/vagrant目录下有什么内容:

QQ截图20190328214455.png

说明同步成功。

我们也可以自定义共享路劲,编辑vagrant_vm文件夹下的Vagrantfile文件:

QQ截图20190328222933.png

在这行下面添加如下配置:

1
config.vm.synced_folder "./data", "/share", create:true, owner: "root", group: "root"

这个配置的意思是将当前路径下的data文件夹和虚拟机的/share目录共享,拥有者为root,群组为root,如果路径不存在则创建。

修改了Vagrantfile文件需要执行 vagrant reload重启。重启后我们在data文件夹下新建一个world.txt文件,然后连接虚拟机看看是否共享成功:

QQ截图20190328231719.png

共享成功!

在这途中,遇到了如下问题:

Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem “vboxsf” is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context, the command attempted was

The error output from the command was: mount: unknown filesystem type ‘vboxsf’

安装下面这个插件可解决问题:

1
vagrant plugin install vagrant-vbguest

网络配置

虚拟机私有网络

在Vagrantfile里打开下面这行配置:

QQ截图20190329203440.png

然后使用命令vagrant reload重启虚拟机,重启后我们使用ping命令看是否可以在windows上访问到这个ip:

QQ截图20190329203610.png

访问成功,连接虚拟机,使用ifconfig查看其IP:

QQ截图20190329203731.png

正是我们刚刚配置的那个IP。

虚拟机公有网络

编辑Vagrantfile,将我们刚刚开启的私有网络配置注释,然后开启下面这行配置:

QQ截图20190329204536.png

然后重启虚拟机,重启过程中会然你根据当前网络环境选择:

QQ截图20190329204658.png

因为我电脑连接的是家里wifi所以选择第四个选项,重启好后连接虚拟机,查看其IP:

QQ截图20190329204819.png

新开一个cmd窗口,ping 这个地址看是否能通:

QQ截图20190329204921.png

公有网络和私有网络的区别是,公有网络是无线路由器自动分配的IP地址,并且在同一个wifi网络下的其他设备也是可以访问这个IP地址的。

比如我们在windows浏览器里输入http://192.168.28.83/

QQ截图20190329205957.png

然后让手机连接和电脑相同的wifi网络,并且访问http://192.168.28.83/

结果说明公有网络配置成功。

多主机配置

使用Vagrant可以轻松地创建多台虚拟主机。下面我们开始通过Vagrant来创建两台新的虚拟主机“prod”和“dev”。

在vagrant_vm目录下新建一个目录,名称为multi,然后通过现有的box来初始化一个Vagrantfile配置:

QQ截图20190329213710.png

接着编辑multi目录下的Vagrantfile文件,新增下面两项配置:

QQ截图20190329213847.png

运行vagrant status

QQ截图20190329213928.png

可以看到多了两台状态为not created的虚拟机,名称分别为“prod”和“dev”。

我们可以使用vagrant up来启动两台主机,也可以通过vagrant up prod来单独启动“prod”这台虚拟主机。

启动后(第一次启动耗时可能比较长),使用vagrant status来查看它们的状态:

QQ截图20190329214836.png

通过vagrant ssh 主机名就可以连接上它们了。

网络配置

接下来开始配置网络,让它们之间可以通讯。

我们按照上面介绍网络配置的方式来为这两台虚拟主机配置私有网络:

QQ截图20190329215535.png

值得注意的是,在配置私有网络的时候,IP网段不能和Windows主机相同。

配置好后重启这两台虚拟机,然后分别连接这两台虚拟机,看是否能够ping通:

QQ截图20190329220045.png

QQ截图20190329220109.png

配置成功。

自定义主机名

编辑Vagrantfile,添加如下配置:

QQ截图20190329220648.png

重启后,连接虚拟机,可以看到hostname已经修改为我们设置的名称了:

QQ截图20190329220747.png

QQ截图20190329220810.png

多主机的共享目录

默认的这两台虚拟主机的/vagrant和当前目录multi/是共享的。我们也可以分别为它们设置不同的共享目录。

编辑Vagrantfile,添加如下配置:

QQ截图20190329221152.png

然后重启这两台虚拟主机就好了。

更多Vagrant的配置可以查看官方文档:https://www.vagrantup.com/docs/

请作者喝瓶肥宅水~

TOP