VitualBox+Vagrant搭建Centos7 挂载共享目录
1.安装VirtualBox和Vagrant
在win10下先安装VirtualBox然后再安装Vagrant。我这里用的VirtualBox6.0.8,Vagrant_2.2.4_x86_64。
- 虚拟机:VirtualBox
- 管理工具:Vagrant
1)安装VirtualBox
直接下载安装一直点下一步即可;
2)安装Vagrant
直接下载安装一直点下一步即可;
注意:下载的时候,virtualbox和vagrant的版本要搭配,建议都下载最新版的。还有就是要根据自己的操作系统版本进行选择32位或者64位下载。在windows系统中,可能还需要配置环境变量以及一定要开启VT-x/AMD-V硬件加速
在windows下安装vagrant,为了写入相应配置到环境变量,可能会要求重新启动一下系统,或者可以自己将bin目录配置进环境变量,可不需重启系统
2.下载box
我这里用的Centos7
http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7.box
官网的box列表,更多centos7box列表,可以选择自己需要的系统进行安装
3.添加box
创建一个目录,把CentOS-7.box放到创建的目录下,然后cmd到该目录下执行以下命令
vagrant box add centos7 CentOS-7.box
4.初始化Centos7
执行初始化后会在当前文件夹下生成一个文件Vagrantfile
vagrant init centos7
修改配置文件如下
Vagrant.configure("2") do |config| config.vm.box = "centos7" #box名称 config.vm.hostname = "centos7" #系统下的主机名 config.vm.synced_folder "E:/dnmp", "/dnmp",create: true,owner: "root", group: "root",mount_options:["dmode=775","fmode=644"] #共享目录 config.vm.network "public_network", ip: "192.168.1.131" #采用桥接网络,共享主机网络 config.vm.provider "virtualbox" do |vb| vb.memory = 2048 vb.cpus = 2 vb.name = "centos7_box" end
end
共享目录配置解释
config.vm.synced_folder "your_folder"(必须) //物理机目录,可以是绝对地址或相对地址,相对地址是指相对与vagrant配置文件所在目录 ,"vm_folder(必须)" // 挂载到虚拟机上的目录地址 ,create(boolean)--可选 //默认为false,若配置为true,挂载到虚拟机上的目录若不存在则自动创建 ,disabled(boolean):--可选 //默认为false,若为true,则禁用该项挂载 ,owner(string):'www'--可选 //虚拟机系统下文件所有者(确保系统下有该用户,否则会报错),默认为vagrant ,group(string):'www'--可选 //虚拟机系统下文件所有组( (确保系统下有该用户组,否则会报错),默认为vagrant ,mount_options(array):["dmode=775","fmode=664"]--可选 //dmode配置目录权限,fmode配置文件权限 默认权限777 ,type(string):--可选 //指定文件共享方式,例如:'nfs',vagrant默认根据系统环境选择最佳的文件共享方式
5.安装vbguest插件,(防止挂载失败,提示because the filesystem "vboxsf" is not available的问题,提前执行该命令安装插件)
由于vagrant没有Guest Additions,通过vagrant不能创建共享文件夹,所以需要下载vbguest插件,当启动时自动安装Guest Additions
所以需要关闭虚拟机然后执行安装命令,安装完成后重新加载虚拟机,会看到VirtualBox Guest Additions installer正在安装。
vagrant plugin install vagrant-vbguest
6.启动虚拟机(启动后可看到VirtualBox会有该虚拟机自动生成)
vagrant up
7.连接虚拟机
vagrant ssh
初始密码账户是:
账户 | 密码 |
---|---|
vagrant | vagrant |
root | vagrant |
可以登录后使用sudo -s 或 su root 切换到root账号
sudo -s
注意:centos7不能直接使用ssh通过账号密码连接到服务器,使用centos7.3则可以
centos7.3连接ssh方法:ip:127.0.0.1 端口:2222 账号:root 密码:vagrant
8.设置开机自动挂载和防止重新更新(可不操作,本人没操作)
由于我们上面安装好了Guest Additions,需要修改vagrantfile配置文件,以免下次启动时重复安装Guest Additions,在配置文件最后一个end前添加两行命令(新添加的配置需要使用vagrant reload重新加载配置)
Vagrant.configure("2") do |config|
... config.vbguest.auto_update = false #防止重新安装更新 config.vbguest.no_remote = true #不从远程web端下载
... end
然后ssh连接到服务器。因为系统调用fstab的时候,Virtualbox的共享目录的模块还没有加载,所以我之前安装总是失败。最终的解决方案如下:在文件 /etc/rc.local 中(用root用户)追加如下命令
mount -t vboxsf sharing /mnt/share
9.重启虚拟机查看是否可以共享目录
重启可以看到Machine booted and ready! default: /dump=> E:/dnmp
自行测试新增文件,可以在共享目录 dump下面创建文件看看是否可以进行双向共享
10.vagrant常用命令
命令 | 描述 |
---|---|
vagrant box add | 添加box的操作 |
vagrant init | 初始化box的操作,会生成vagrant的配置文件Vagrantfile |
vagrant up | 启动本地环境 |
vagrant ssh | 通过 ssh 登录本地环境所在虚拟机 |
exit | 退出虚拟机 |
vagrant halt | 关闭本地环境 |
vagrant suspend | 暂停本地环境 |
vagrant resume | 恢复本地环境 |
vagrant reload | 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up) |
vagrant destroy | 彻底移除本地环境 |
vagrant box list | 显示当前已经添加的box列表 |
vagrant box remove | 删除相应的box |
vagrant package | 打包命令,可以把当前的运行的虚拟机环境进行打包 |
vagrant plugin | 用于安装卸载插件 |
vagrant status | 获取当前虚拟机的状态 |
vagrant global-status | 显示当前用户Vagrant的所有环境状态 |
更多详细配置:https://blog.csdn.net/youcijibi/article/details/103119974
window执行bat启动虚拟机例子
cmd /k "cd /d D:\vb_centos_box & vagrant up & vagrant ssh -c 'cd /dnmp;docker-compose up -d;/bin/bash' "