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"]
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM