zoukankan      html  css  js  c++  java
  • windows vagrant共享目录设置问题

    Vagrant 笔记

    Vagrant 介绍

    • 建立和删除虚拟机
    • 配置虚拟机运行参数
    • 管理虚拟机运行状态
    • 自动配置和安装开发环境
    • 打包和分发虚拟机运行环境

    Vagrant的运行,需要依赖某项具体的虚拟化技术,最常见的有VirtualBox以及VMWare两款,早期,Vagrant只支持VirtualBox,后来才加入了VMWare的支持。

    ​ 为什么我们要选择Vagrant呢?因为它有跨平台、可移动、自动化部署无需人工参与等优点。

    环境安装

    1. 下载并安装 virtualbox(virsion:6.0.8)

      下载地址:https://www.virtualbox.org/wiki/Downloads
      安装过程很简单,傻瓜式的一步一步点下去。

    2. 下载并安装vagrant(virsion:2.2.5)

      下载地址:https://www.vagrantup.com/downloads.html
      安装过程依旧没什么难的,跟着提示一步一步next。

      注意:下载的时候,virtualbox和vagrant的版本要搭配,建议都下载最新版的。还有就是要根据自己的操作系统版本进行选择32位或者64位下载。在windows系统中,可能还需要配置环境变量以及一定要开启VT-x/AMD-V硬件加速。

    Vagrant 基本命令

    • 在空文件夹初始化虚拟机
      vagrant init [box-name]

    • 在初始化完的文件夹内启动虚拟机
      vagrant up

    • ssh登录启动的虚拟机
      vagrant ssh

    • 挂起启动的虚拟机
      vagrant suspend

    • 重启虚拟机
      vagrant reload

    • 关闭虚拟机
      vagrant halt

    • 查找虚拟机的运行状态
      vagrant status

    • 销毁当前虚拟机
      vagrant destroy

    • 列出本地环境中所有的box
      vagrant box list

    • 添加box到本地vagrant环境
      vagrant box add box-name(box-url)

    • 更新本地环境中指定的box
      vagrant box update box-name

    • 删除本地环境中指定的box
      vagrant box remove box-name

    • 重新打包本地环境中指定的box
      vagrant box repackage box-name

    • 在线查找需要的box
      官方网址:https://app.vagrantup.com/boxes/search

    Vagrantfile

    1. vm provider通用配置
      虚机容器提供者配置,对于不同的provider,特有的一些配置,此处配置信息是针对virtualbox定义一个提供者,命名为vb,跟前面一样,这个名字随意取,只要节点内部调用一致即可。

      配置信息又分为通用配置和个性化配置,通用配置对于不同provider是通用的,常用的通用配置如下:

      vb.name = "centos7"
      #指定vm-name,也就是virtualbox管理控制台中的虚机名称。如果不指定该选项会生成一个随机的名字,不容易区分。
      vb.gui = true
      # vagrant up启动时,是否自动打开virtual box的窗口,缺省为false
      vb.memory = "1024"
      #指定vm内存,单位为MB
      vb.cpus = 2
      #设置CPU个数
      
      config.vm.hostname = "node1"
      #hostname设置
      
      config.vm.synced_folder '.', '/vagrant', disabled: true #必须先禁用默认的同步目录,否则会报错,原因未知!!!
      config.vm.synced_folder "D:/xxx/code", "/home/www/"
      #同步目录设置
      
      config.vm.network "forwarded_port", guest: 80, host: 8080
      #端口转发设置
      
      config.vm.network "public_network", ip: "192.168.0.200"
      #创建一个bridge桥接网络,指定IP
      
    2. vm provider个性化配置(virtualbox)
      上面的provider配置是通用的配置,针对不同的虚拟机,还有一些的个性的配置,通过vb.customize配置来定制。
      对virtual box的个性化配置,可以参考:VBoxManage modifyvm 命令的使用方法。详细的功能接口和使用说明,可以参考virtualbox官方文档。

      config.vm.provider "virtualbox" do |vb|
          
          #修改vb.name的值
          vb.customize ["modifyvm", :id, "--name", "mfsmaster2"]
           
          #如修改显存,缺省为8M,如果启动桌面,至少需要10M,如下修改为16M:
          vb.customize ["modifyvm", :id, "--vram", "16"]
           
          #调整虚拟机的内存
           vb.customize ["modifyvm", :id, "--memory", "1024"]
           
          #指定虚拟CPU个数
           vb.customize ["modifyvm", :id, "--cpus", "2"]
           
          #增加光驱:
          vb.customize ["storageattach",:id,"--storagectl", "IDE Controller","--port","0","--device","0","--type","dvddrive","--medium","/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"]
          #注:meduim参数不可以为空,如果只挂载驱动器不挂在iso,指定为“emptydrive”。如果要卸载光驱,medium传入none即可。
          #从这个指令可以看出,customize方法传入一个json数组,按照顺序传入参数即可。
           
          #json数组传入多个参数
          vb.customize ["modifyvm", :id, "--name", “mfsserver3", "--memory", “2048"]
      end
      

    共享目录无法设置的原因分析

    启动过程中报出信息:
    No guest additions were detected on the base box for this VM!
    可以看出 centos7 缺少 Virtualbox Guest Additions

    解决方法:

    • 安装 vagrant-vbguest
      vagrant plugin install vagrant-vbguest

    • 启动过程会自动安装 Virtualbox Guest Additions,启动后配置的共享目录可以双向读写

    • Vagrantfile 配置共享目录,挂载位置不能使用 /vagrant

      #首先禁用系统默认的共享目录,否则报错,原因未知!!!
      config.vm.synced_folder '.', '/vagrant', disabled: true
      
      #然后设置需要的共享目录
      config.vm.synced_folder "D:/xxx/code", "/code",
      owner: "root", group: "root",
      type: "rsync",
      rsync__exclude: ".git/",
      rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]
      or
      config.vm.synced_folder "D:/xxx/code", "/code",
      mount_options: ["uid=1234", "gid=1234"]
      
  • 相关阅读:
    【SQLSERVER】动态游标的实现
    【Oracle】动态游标的实现
    【SQLSERVER】拷贝表数据
    LeetCode: Count and Say
    LeetCode: Construct Binary Tree from Preorder and Inorder Traversa
    LeetCode: Combinations
    LeetCode: Convert Sorted List to Binary Search Tree
    LeetCode: Decode Ways
    LeetCode: Combination Sum II
    LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/super-lulu/p/11347086.html
Copyright © 2011-2022 走看看