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