VitualBox+Vagrant搭建Centos7 挂载共享目录

1.安装VirtualBox和Vagrant

在win10下先安装VirtualBox然后再安装Vagrant。我这里用的VirtualBox6.0.8,Vagrant_2.2.4_x86_64。

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 启动 Virtualbox ,能够将宿主机当前目录下的文件同步(复制)到虚拟机 /dnmp目录,但在虚拟机中对 /dnmp所做的修改并不会在宿主机目录生效,无法实现双向共享

由于vagrant没有Guest Additions,通过vagrant不能创建共享文件夹,所以需要下载vbguest插件,当启动时自动安装Guest Additions

所以需要关闭虚拟机然后执行安装命令,安装完成后重新加载虚拟机,会看到VirtualBox Guest Additions installer正在安装。

vagrant plugin install vagrant-vbguest

6.启动虚拟机(启动后可看到VirtualBox会有该虚拟机自动生成)

vagrant up
首次执行vagrant up可能需要20分钟左右,根据自家网络情况而定
 
以下为ssh连接的ip和地址,端口,账号密码信息

 

7.连接虚拟机

vagrant ssh

初始密码账户是:

账户密码
vagrant vagrant
root vagrant

可以登录后使用sudo -s 或 su root 切换到root账号

sudo -s

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

原文地址:https://www.cnblogs.com/-mrl/p/13404267.html