前言

虚拟机玩着玩着 可能会崩溃,如果所有的东西都重新装,比较耗时,这里提供一种构建模板 镜像的方法,帮你快速从备份镜像中恢复虚拟机。

1. 安装VirtualBox、Vagrant

1.1 获取安装包

链接:https://pan.baidu.com/s/1qDk4H9g5yGyrOOurXBGt7Q 
提取码:lnt5复制代码

【Vagrant】模板镜像制作_Vagrant

从网盘中把三个包都下载下来,当然 你也可以从官网下载,virtualbox和vagrant版本要匹配,不匹配的话,可能胡有兼容性问题,我这里给的这个版本,我测试过了的,没啥问题

1.2 安装

安装虚拟机 需要CPU开启虚拟模式,这个自行百度。

1.2.1 安装virtualbox

打开VirtualBox-6.0.10-132072-Win.exe,更改安装路径,一路下一步就可以。

1.2.2 安装vagrant

打开vagrant_2.2.5_x86_64.msi,更改安装路径,一路下一步就可以。

安装vagrant时,会要重启一次系统,重启即可。

1.2.3 验证

win+r输入cmd,打开cmd窗口,输入 vagrant,有对应的信息提示即可,如下:

【Vagrant】模板镜像制作_Vagrant_02

2. 安装centos7

2.1 导入镜像

如果去官网下载镜像,会比较慢,这里我已经把官方镜像下载下来,并上传到网盘了,上文下载的CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box文件就是centos/7的镜像,我们将它加入到vagrant的本地镜像库即可使用。

导入镜像到本地vagrant库,在CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box文件所在目录打开cmd窗口,执行一下命令

vagrant add ./centos/7 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box复制代码

查看导入的镜像

vagrant box list复制代码

结果如下图标记的,就是本次导入的镜像

【Vagrant】模板镜像制作_Vagrant_03

2.2 更改virtualbox的默认网段

打开virtualbox,管理-->主机网络管理器-->更改你想要的网段,如下图:

【Vagrant】模板镜像制作_Vagrant_04

2.3 编写Vagrantfile文件

新建一个文件夹,该文件夹下新建一个Vagrantfile文件

【Vagrant】模板镜像制作_Vagrant_05

我这里的这个bbb的文件夹下除了Vagrantfile文件外,还有一个.vagrant的文件夹,这个文件夹是启动虚拟机后生成的。

Vagrant.configure("2") do |config|

   (1..1).each do |i|
        config.vm.define "server-#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"

            # 设置虚拟机的主机名
            node.vm.hostname="server-#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.64.#{100+i}", netmask: "255.255.255.0"
			


            # 设置主机与虚拟机的共享目录
            # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

            # VirtaulBox相关配置
            node.vm.provider "virtualbox" do |v|
                # 设置虚拟机的名称
                v.name = "server-#{i}"
                # 设置虚拟机的内存大小
                v.memory = 16384
                # 设置虚拟机的CPU个数
                v.cpus = 2
            end
			
		
        end
   end
end复制代码

node.vm.box = "centos/7",该项指向刚刚我们导入的镜像,IP要和virtualbox中配置的网段对应,其它的按需更改

2.4 启动虚拟机

需要先打开virtualbox

在Vagrantfile文件统计目录下打开cmd命令窗口,启动虚拟机。

vagrant up复制代码

【Vagrant】模板镜像制作_Vagrant_06

同时,在virtualbox界面会有该虚拟机的信息

【Vagrant】模板镜像制作_Vagrant_07

3. 安装必备的软件

这里不多说,参考我其它的文章安装,我这里安装了jdk、docker、docker-compose以及一些常用的工具 如:vim、lrzsz等,并且开启了root用户使用ssh工具远程连接的功能。

4. 制作备份

4.1 镜像打包

在Vagrantfile统计目录下打开cmd窗口,执行一下命令

vagrant package server-1复制代码

【Vagrant】模板镜像制作_Vagrant_08

截图中的命令是 vagrant package local-server-1,这个local-server-1是主机名,和Vagrantfile文件中的主机名对应的,因为我在做实际操作的时候是用的local-server-1这个名字,而写该文章时,Vagrantfile文件中用的是server-1这个主机名,所以在文档中给的是  vagrant package server-1

命令执行后,会在Vagrantfile文件的统计目录下生成一个package.box的文件,该文件就是我们的备份镜像

【Vagrant】模板镜像制作_Vagrant_09

4.2 打包好的镜像导入vagrant库

package.box统计目录下打开cmd命令窗口,执行以下命令

vagrant box add back-centos7 ./package.box复制代码

查看导入的镜像

vagrant box list复制代码

【Vagrant】模板镜像制作_Vagrant_10

5. 使用导入的备份镜像

和使用官方的centos/7镜像是一样的,不过,在Vagrantfile中有一处要调整。config.vm.synced_folder ".", "/vagrant", disabled: true

5.1 编写Vagrantfile文件

Vagrant.configure("2") do |config|

   (1..2).each do |i|
		# 该处用自己的镜像需要加这一行配置,不加,则无法一次性创建多台虚拟机
		config.vm.synced_folder ".", "/vagrant", disabled: true
        config.vm.define "server-#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "back-centos7"

            # 设置虚拟机的主机名
            node.vm.hostname="server-#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.64.#{100+i}", netmask: "255.255.255.0"
			


            # 设置主机与虚拟机的共享目录
            # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

            # VirtaulBox相关配置
            node.vm.provider "virtualbox" do |v|
                # 设置虚拟机的名称
                v.name = "server-#{i}"
                # 设置虚拟机的内存大小
                v.memory = 16384
                # 设置虚拟机的CPU个数
                v.cpus = 2
            end
			
		
        end
   end
end复制代码

5.2 启动虚拟机

vagrant up复制代码

会启动两台虚拟机,并且附带了你安装过的所有软件:

【Vagrant】模板镜像制作_Vagrant_11

使用xshell远程连接,两台机器的IP分别是 192.168.64.101、192.168.64.102

【Vagrant】模板镜像制作_Vagrant_12

毕。