1、下载Virtualbox 并安装:
官网下载 Virtualbox ,选择相应的版本下载并安装 (涉及 Virtualbox 的安装 目录)
2、配置 Virtualbox
主要是配置 Virtualbox 的 虚拟电脑位置,避免占用系统盘
打开 Virtualbox ,选择 管理 -->全局设定 ----> 常规 ---> 默认虚拟电脑位置(选择自定义的目录,方便后期删除)
3、下载安装 vagrant:
官网下载vagrant,并安装相应 的 版本(涉及vagrant 的安装目录)https://app.vagrantup.com/boxes/search
同时,会生成vagrant.d文件夹,该文件下的boxes文件用来存放虚拟机的系统镜像文件,可以在 Vagrant Cloud 里面下载;
可以修改系统镜像默认存放的路径:把vagrant.d文件夹拷贝到目标文件中,然后把这个目录添加到环境变量中(win:永久设置用户的环境变量:setx VAGRANT_HOME "/your/path" 、永久设置系统的环境变量setx VAGRANT_HOME "/your/path" /M
)
4、如何下载系统镜像文件到vagrant.d/boxs中???
远程: vagrant box add boxName(系统镜像文件) 添加系统镜像文件到vagrant.d/boxs文件夹中
查看本地box (box也是系统镜像文件): vagrant box list
如何将本地下载好的镜像文件添加到vagrant.d/boxs中:
vagrant box add my-box file:///C:/Users/Administrator/.vagrant.d/boxes/ubuntu-server-16.04-amd64-vagrant.box
5、实例化虚拟机: (自定义目录)
(1)进入文件目录,执行命令 vagrant init [ boxName ],该指令会在当前文件中创建一个Vagrantfile 文件,里面存放的是虚拟机的配置信息;包括端口映射(config.vm.network :forwarded_port, guest: 80, host: 8080)、网络配置(config.vm.network "public_network")、目录映射(config.vm.synced_folder "D:/www", "/var/www/html")
(2)创建并启动虚拟机: vagrant up 该指令会根据当前文件下的Vagrantfile配置文件,创建一个虚拟机
(3)使用 vagrant ssh 指令进入到虚拟机,如果没有任何反应,就打开Virtualbox ,并单击对应的虚拟机;如果提示(VT-x/AMD-V 硬件加速在您的系统中不可用。您的 64-位虚拟机将无法检测到 64-位处理器,从而无法启动。),
处理步骤:
1.重启电脑进入BIOS,找到CPU Configuration> Intel Virtualization Technology,设置为Enabled。
2.保存退出,重启电脑,再次启动虚拟机。
3.一切正常了。
(4)关闭(停止)虚拟机: vagrant halt (关机) 会清空虚拟机的所有状态
(5)重启虚拟机: vagrant reload (修改完配置文件后,若想使配置文件生效的话,就必须reload)
(6)删除虚拟机: vagrant destroy
(7)删除系统镜像文件: vagrant box remove [ 系统镜像文件名 ]
查看虚拟机的状态: vagrant status
暂停虚拟机: vagrant suspend 此时虚拟机会 记录当前的状态,当再次启动时,会恢复上一次的状态
恢复虚拟机:vagrant resume 恢复暂停的虚拟机
add box的时候默认保存在 C:\Users\xxx\.vagrant.d
VAGRANT_HOME can be set to change the directory where Vagrant stores global state. By default, this is set to ~/.vagrant.d. The Vagrant home directory is where things such as boxes are stored, so it can actually become quite large on disk.
通过设置VAGRANT_HOME环境变量改变默认位置
setx VAGRANT_HOME "X:/your/path"
setx VAGRANT_HOME "X:/your/path" /M (系统变量)
三: 使用完毕的卸载工作:
先卸载 相关的虚拟机 ,然后删除相关的目录,卸载掉Virtualbox 和 vagrant
上述所有的步骤设计到的目录:
(1)virtualBox 的安装目录、virtualBox 虚拟机存放目录 (vagrant up启动的虚拟机)
(2)vagrant 的安装目录 、系统镜像文件的存放目录(vagrant box )、项目目录(vagrant init 对应的目录)
详细资料: 宁-- https://ninghao.net/search?key=vagrant&type=All&sort_by=search_api_relevance&sort_order=DESC
文件共享: 如何将宿主主机中的文件和虚拟机中的文件保持同步????
(1)配置共享文件:
在vagrantFile文件中,配置config.vm.synced_folder "宿主主机目录", "虚拟机下的目录" , create:true ,owner:"root",group:"root"
如 config.vm.synced_folder "E:\51tbk" , "/www/51tbk"
注意: create 参数代表的是 如果虚拟机下的目录不存在的话,就会自动创建;并把文件的拥有者owner和所属组group设置成root或者其他用户
网络设置:
vagrant支持三种网络模式: 公有(公网)网络、私有(局域)网络和端口转发。
(1)端口转发: 需要手动配置端口转发,将宿主主机的端口转发到虚拟机对应的端口上: 8080 - 》 80
优点: 外网和宿主主机可以访问
对应的配置项:
config.vm.network "forwarded_port", guest: 80, host: 8080
(2)私有网络: 为虚拟机分配一个ip地址,通过ip地址;宿主主机可以和虚拟机实现通信,虚拟机之间也可以实现通信;相当于一个小的局域网
缺点是:外网无法访问;这里的外网指的是宿主主机以外的网络设备
对应的配置项是:
config.vm.network "private_network", ip: "192.168.50.4"
(3)公网: 虚拟机享受实体机器一样的待遇,一样的网络配置,此时,虚拟机和宿主主机地位一样;都是局域网中的一份子;地位平齐。vagrant1.3版本之后也可以设定静态IP。设定语法如下:
config.vm.network "public_network", ip: "192.168.1.120"
公有网络中还可以设置桥接的网卡,语法如下
config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'
优点:
打包虚拟机,变成一个box系统文件:
vagrant package 该指令会在当前目录下生成一个package.box文件
如何把这个生成的box文件添加到vagrant.d/boxs文件夹中???
使用: vagrant box add lph/cnetos(boxName) package.box
删除box: rm package.box
使用打包的box : vagrant init lph/cnetos
注意 : vagrant.d/boxs 文件中包含了很多个box,每个box都有自己的boxName,每个box里面都有一个系统镜像文件;我们通过boxName来区分;如 vagrant init boxName // 我们使用boxName里面的系统镜像文件来创建虚拟机
A 、多主机的情况:
web服务器、数据库服务器、redis服务器、文件存储服务器等,这些虚拟机之前如何通信?如何启动多个虚拟机???
(1)配置多个主机:
config.vm.define "虚拟机名" do | 虚拟机名|
end
config.vm.define "虚拟机名2" do | 虚拟机名2 |
end
(启动: vagrant up [ 虚拟机名 ] 登录: vagrant ssh [ 虚拟机名 ])
(2)虚拟主机通信,配置网络:
config.vm.define "虚拟机名" do | 虚拟机名 |
虚拟机名.vm.network "private_network" , ip:"192.16.98.1" //网段不能和宿主主机一样
虚拟机名.vm.hostname = "主机名"
虚拟机名.vm.synced_folder "宿主主机目录" , “虚拟机目录”
end
config.vm.define "虚拟机名2" do | 虚拟机名2 |
虚拟机名2.vm.network "private_network" , ip:"192.16.98.23" //两台虚拟主机可以通信,网段相同
虚拟机名2.vm.hostname = "主机名2"
虚拟机名2.vm.synced_folder "宿主主机目录" , “虚拟机目录”
end