前言
虚拟机玩着玩着 可能会崩溃,如果所有的东西都重新装,比较耗时,这里提供一种构建模板 镜像的方法,帮你快速从备份镜像中恢复虚拟机。
1. 安装VirtualBox、Vagrant
1.1 获取安装包
链接:https://pan.baidu.com/s/1qDk4H9g5yGyrOOurXBGt7Q 提取码:lnt5复制代码
从网盘中把三个包都下载下来,当然 你也可以从官网下载,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,有对应的信息提示即可,如下:
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复制代码
结果如下图标记的,就是本次导入的镜像
2.2 更改virtualbox的默认网段
打开virtualbox,管理-->主机网络管理器-->更改你想要的网段,如下图:
2.3 编写Vagrantfile文件
新建一个文件夹,该文件夹下新建一个Vagrantfile文件
我这里的这个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复制代码
同时,在virtualbox界面会有该虚拟机的信息
3. 安装必备的软件
这里不多说,参考我其它的文章安装,我这里安装了jdk、docker、docker-compose以及一些常用的工具 如:vim、lrzsz等,并且开启了root用户使用ssh工具远程连接的功能。
4. 制作备份
4.1 镜像打包
在Vagrantfile统计目录下打开cmd窗口,执行一下命令
vagrant package server-1复制代码
截图中的命令是 vagrant package local-server-1,这个local-server-1是主机名,和Vagrantfile文件中的主机名对应的,因为我在做实际操作的时候是用的local-server-1这个名字,而写该文章时,Vagrantfile文件中用的是server-1这个主机名,所以在文档中给的是 vagrant package server-1
命令执行后,会在Vagrantfile文件的统计目录下生成一个package.box的文件,该文件就是我们的备份镜像
4.2 打包好的镜像导入vagrant库
package.box统计目录下打开cmd命令窗口,执行以下命令
vagrant box add back-centos7 ./package.box复制代码
查看导入的镜像
vagrant box list复制代码
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复制代码
会启动两台虚拟机,并且附带了你安装过的所有软件:
使用xshell远程连接,两台机器的IP分别是 192.168.64.101、192.168.64.102
毕。