Vagrant+VirtualBox玩转虚拟机
前言
第一次接触虚拟机是在2015年的时候,那时候了解到虚拟机管理软件有两种:VMware、VirtualBox,由于VMware有些功能并不开源,收费,VirtualBox是开源软件,所以当时公司采用VirtualBox去管理虚拟机,VirtualBox创建虚拟机的步骤都知道,下载系统iso镜像,在VirtualBox上配置内存、硬盘存储,cpu、网络等参数,傻瓜式一路安装下来,你就得到了一台可用的虚拟机,这种经历导致长时间以来我本机安装虚拟机都是这种繁琐的过程,现在想来,以前为了这种虚拟机安装,浪费多少时间和流量。本文将带你到另一个世界,解决以上痛点,利用Vagrant+VirtualBox玩转虚拟机。
Vagrant介绍
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统(已经支持VMware),使用 Chef创建自动化虚拟环境。我们可以使用它来干如下这些事:
- 建立和删除虚拟机
- 配置虚拟机运行参数
- 管理虚拟机运行状态
- 自动配置和安装开发环境
- 打包和分发虚拟机运行环境
Vagrant的运行,需要依赖某项具体的虚拟化技术,最常见的有VirtualBox以及VMWare两款,早期,Vagrant只支持VirtualBox,后来才加入了VMWare的支持。
为什么我们要选择Vagrant呢?因为它有跨平台、可移动、自动化部署无需人工参与等优点。
在Vagrant体系中,有个box(箱子)的概念,这优点类似于docker体系中的image(镜像)。基于同一个box,不同的人可以运行得到相同的内容。
Vagrant环境的安装
1. 下载并安装virtualbox
下载地址:https://www.virtualbox.org/wiki/Downloads
安装过程很简单,傻瓜式的一步一步点下去。
2.下载并安装vagrant
下载地址:https://www.vagrantup.com/downloads.html
安装过程依旧没什么难的,跟着提示一步一步next。
3.安装检测
自动化搭建第一台centos7系统
1. 在E盘建一个文件夹E:\os\first-docker-centos7
2. cmd 进入这个目录
3. 执行命令 vagrant init 初始化一个系统配置
4. 编辑Vagrantfile文件
需要启动的虚拟机镜像名字:
config.vm.box = "centos/7"
配置桥接网络,和宿主机同一网段:
config.vm.network "public_network"
硬件参数,一看就懂:
config.vm.provider "virtualbox" do |vb|
vb.memory = "3000"
vb.name = "docker-centos7-1"
vb.cpus = 1
end
5.保存
执行结果如下:
5. 下载centos7 box,类似于docker image,如果本地不下载,启动的时候则是从远程仓库下载,会很慢,类似于docker image 本地没有会从远端仓库下载。
下载地址:https://cloud.centos.org/
6. 下载后放在磁盘无中文的路径下,然后加添加成可用的box
vagrent box add centos/7 E:\box\CentOS-7-x86_64.VirtualBox.box
7. 查看添加结果
vagrant box list
8. 打开 VirtualBox 软件。
9. cmd进入E:\os\first-docker-centos7 ,执行:
vagrant up
即可看到VirtualBox中出现新的系统正在安装。
此时,centos7已经部署完成,我们可以通过以下命令访问:
vagrant ssh docker-centos7-1
但是这种访问方式不太友好,我们常用的访问方式通常是通过雷系xshell等工具,利用 IP,root, 22端口访问,我们需要做如下操作:
10. 登陆 : vagrant ssh docker-centos7-1
11. 切换root用户:sudo -i
12. 修改ssh配置: vi /etc/ssh/sshd_config
PasswordAuthentication yes (配置为yes,默认是no)
13. 配置root密码:passwd 根据提示输入两次密码
14. 重启sshd服务:systemctl restart sshd
15. 外部用 xshell 通过 ip,root,22 密码登陆成功
Vagrant Box常用命令
1. 列出本地环境中所有的box
vagrant box list
2. 添加box到本地vagrant环境
vagrant box add box-name(别名) E:\*.box(全路径)
3. 删除本地环境中指定的box
vagrant box remove box-name
4. 更新本地环境中指定的box
vagrant box update box-name
5. 重新打包本地环境中指定的box
vagrant box repackage box-name
6. 在线查找需要的box
官方网址:https://app.vagrantup.com/boxes/search
Vagrant 常用命令
1.在空文件夹初始化虚拟机
vagrant init [box-name]
2.在初始化完的文件夹内启动虚拟机
vagrant up
3.ssh登录启动的虚拟机
vagrant ssh
4.挂起启动的虚拟机
vagrant suspend
5.重启虚拟机
vagrant reload
6.关闭虚拟机
vagrant halt
7.查找虚拟机的运行状态
vagrant status
8.销毁当前虚拟机
vagrant destroy