虚拟机与管理虚拟机的软件:Vagrant 与 Virtualbox
场景:
1.比如你使用windows系统,想要学习一下linux系统,就可以使用virtualbox + vagrant 快速搭建一个linux系统。
2.比如你需要在本地搭建开发测试环境,也可以使用vagrant 快速拉取一个centos的box搭建一个干净的开发测试环境。 并且可以和本机同步共享目录,就可以在本机上面进行项目开发,在干净的linux环境下面运行项目。
Virtualbox下载: https://www.virtualbox.org/
Vagrant下载: https://www.vagrantup.com/
安装好vagrant之后可以使用终端查看一下已经有的box列表
vagrant box list
可以去网站搜索一下需要的box(类似docker里面的镜象), vagrant box: https://app.vagrantup.com/boxes/search
安装box(搜索到的box的名称,例如centos/7)
vagrant box add centos/7
选择你使用的虚拟机软件的类型,比如 virtualbox 后,开始下载box
(如果下载比较慢,也可以复制下载地址使用迅雷等进下载)
如果你使用了迅雷等下载好了一个box,需要手动安装一下下载的box(在上一步用命令行工具下载的跳过此步骤):
进入到下载好的box的目录执行
vagrant box add centos-test virtualbox.box(下载的box的名字)
删除一个box
vagrant box remove centos-test
进入到项目目录初始化一个vagrant
vagrant init centos/7
虚拟机网络设置
会自动生成一个Vagrantfile文件
打开这个文件可以看到网络配置,去掉前面的#号
...... # config.vm.network "private_network", ip: "192.168.33.10" # config.vm.network "public_network" ......
共享的目录设置
默认情况下,vagrant 会共享我们的项目的目录,也就是,在项目的虚拟机里面,会有一个目录跟我们的项目的目录是同步的。这样我们可以在本地的电脑上,去编辑项目的文件,然后在虚拟机,可以运行它们。
配置共享目录
如果你有额外的目录要跟虚拟机同步的话,可以通过修改 Vagrantfile 这个文件,去添加这些额外的共享目录 …
找到 config.vm.synced_folder … 虚拟机的同步目录的相关配置 …
去掉这行代码前面的注释符号 … 可以让这行代码起作用。
这个配置后面有两个参数,第一个参数是主机上的目录,可以使用绝对的位置,也可以使用相对的位置,如果是相对位置,是相对于项目根目录的位置,也就是相对于 Vagrantfile 这个文件所在的目录的位置。两个参数之间是一个逗号,第二个参数是在虚拟机上的目录,如果你设置的目录在虚拟机上不存在,Vagrant 在启动虚拟机的时候,会自动去创建这个目录。
/vagrant_data ,表示根目录下面的 vagrant_data 这个目录 …
config.vm.synced_folder "app", "/vagrant"
另外,还有一些选项,输入一个逗号 … 然后把 create,设置成 true … 这样电脑上的这个同步的目录不存在的话,就会创建一个 ..
再输入一个逗号 … 我们还可以设置一下这个目录在虚拟机上的拥有者,还有所属的群组 …
...... config.vm.synced_folder "../data", "/vagrant_data", create: true, owner: "root", group: "root" ......
例:window下使用nfs设置共享目录双向同步文件
安装agrant-winnfsd插件
vagrant plugin install vagrant-winnfsd
修改Vagrantfile文件,映射项目根目录的上级www目录到虚拟机的www/wwwroot目录(默认的项目目录已经是共享到虚拟机的vagrant目录上了,另外增加的共享目录最好不要放到项目初始化的目录中,不然文件也会同步到虚拟机的vagrant目录上,会重复同步了一份)
Vagrant.configure("2") do |config| #winfsd config.winnfsd.logging = "on" config.winnfsd.uid = 1 config.winnfsd.gid = 1 config.vm.synced_folder "../www", "/www/wwwroot", type: "nfs"
保存之后启动vagrant(重启虚拟机是vagrant reload )
其它设置可以看官方文档:https://www.vagrantup.com/docs/virtualbox/configuration.html
修改内存和CPU
config.vm.provider "virtualbox" do |v| v.memory = 2024 v.cpus = 2 end
vagrant up vagrant status
登录到这个虚拟机
vagrant ssh
要换到root用户,密码是vagrant
su root
查看一下ip地址
ip addr
可以看到192.168.33.10是一个私有网络,还有一个共有网络的IP,可以用终端ping一下
管理虚拟机
退出
exit
停止虚拟机(会关掉虚拟机)
vagrant halt
暂停虚拟机(会保存虚拟机状态)
vagrant suspend
启动虚拟机
vagrant up
销毁一个虚拟机
vagrant destroy