概述
Vagrant是一個非常強大的虛擬機器管理工具,可以幫助開發者快速建立虛擬化環境。因此,我就是想利用Vagrant、Vbox、Docker搭建一套自己的LNMP開發環境,大致思路如下:
(1) 首先,使用Vagrant、Vbox快速的建立Linux環境,同時將自己Windows下的工作目錄workspace對映到Linux環境,這樣在Windows下對工作目錄的任何修改都會同步到Linux環境。
(2) 然後,在Linux環境下安裝Docker,利用Docker建立自己需要的映象,例如:Nginx、Mysql等,然後啟動容器,將Linux下的工作目錄對映Docker容器中。
注意:這裡只簡單的介紹使用Vagrant建立Linux虛擬環境的過程,以及記錄遇到的問題。
安裝Vagrant
首先,需要安裝Vagrant和VirtualBox,安裝過程不再詳述,這裡只列出相關的版本資訊:
版本號 | |
---|---|
Vagrant | 2.2.9 |
VirtualBox | 6.0.22 |
安裝Box
假設在Windows環境下,你的工作目錄為D:/workspace
,這裡介紹Box安裝的兩種方式:第一種是線上下載安裝;第二種是匯入本地的Box
1. 線上下載Box
- 首先,在官網尋找所需要的Box,例如:
centos/7
- 然後,在工作目錄workspace中執行命令
vagrant init centos/7
進行初始化,這裡的 “centos/7”就是Box的名稱 - 初始化完畢後,在workspace目錄中會生成一個
Vagrantfile
檔案,這就是非常重要的配置檔案 - 然後,執行
vagrant up
來啟動Box,啟動過程會自動下載Box,啟動成功後,在workspace目錄會生成一個.vagrant
目錄,存放的是Box虛擬機器相關的檔案 - 最後,執行
vagrant ssh
即可遠端連線Box,也可以通過xshell遠端登入,初始賬號和密碼都是 “vagrant”
2. 匯入本地Box
- 首先,在官網尋找所需要的Box,例如:
centos/7
,然後將Box直接下載到本地 - 然後,在工作目錄workspace中執行命令
vagrant box add
將本地的Box匯入,例如:// centos-7是自定義的Box名稱,D:/workspace/centos-7.box是Box的路徑 vagrant box add centos-7 D:/workspace/centos-7.box
- 然後,執行命令
vagrant init centos-7
進行初始化,這裡的 “centos-7”就是自定義的Box的名稱 - 初始化完畢後,在workspace目錄中會生成一個
Vagrantfile
檔案,這就是非常重要的配置檔案 - 然後,執行
vagrant up
來啟動Box,啟動成功後,在workspace目錄會生成一個.vagrant
目錄,存放的是Box虛擬機器相關的檔案 - 最後,執行
vagrant ssh
即可遠端連線Box,也可以通過xshell遠端登入,初始賬號和密碼都是 “vagrant”
遇到的問題
在執行vagrant up
命令啟動Box的時候,經常會報錯,有的問題是由於Vagrant和Vbox的版本不匹配,有的問題是其它原因。這裡,主要是記錄一下本人安裝過程中遇到的問題及解決方式。
問題1
$ vagrant up
Vagrant failed to initialize at a very early stage:
There was an error running VBoxManage. This is usually a permissions
problem or installation problem with VirtualBox itself, and not Vagrant.
Please note the error message below (if any), resolve the issue, and
try Vagrant again.
請求的操作需要提升。 (740)
問題原因: 由於VboxManage.exe許可權或者相容性的原因
解決方式: 在VirtualBox的安裝目錄中找到VboxManage.exe,然後,右鍵->屬性->相容性,不勾選“以相容模式執行此程式”和“以管理員身份執行此模式”。修改完畢後,再次執行vagrant up
命令,不再出現上述問題。
問題2
==> default: Checking for guest additions in VM...
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
問題原因: 其實這並不是錯誤資訊,而是普通的提示資訊,根據資訊內容可知沒有安裝guest additions
,即VirtualBox的增強擴充套件,沒有增加擴充套件Windows環境的工作目錄與Linx環境的工作目錄就沒法雙向同步,所以最好還是安裝一下guest additions
。
VboxGuestAdditions增強擴充套件
1. VboxGuestAdditions簡介
VboxGuestAdditions的功能非常強大,下面簡單列舉幾條:
- 滑鼠驅動:如果沒有安裝VboxGuestAdditions,在虛擬機器中無法顯示滑鼠的,如果想使用滑鼠,則只能按
Rigth Ctrl
從虛擬機器切換到主機,滑鼠才能移動;而安裝了VboxGuestAdditions,滑鼠可以無縫移動。 - 無縫視窗:如果沒有安裝VboxGuestAdditions,虛擬機器視窗就是一個獨立的視窗;而安裝了VboxGuestAddition,虛擬機器視窗就像嵌入在主機桌面一樣,非常方便。
- 共享目錄:安裝了VboxGuestAddition,可以將主機的一個目錄與虛擬機器的目錄進行對映,這樣主機的目錄就能和虛擬機器的目錄保持同步共享。
- 共享剪下板:安裝了VboxGuestAddition,在主機複製的內容可以直接在虛擬機器進行貼上,反之亦然。
VboxGuestAdditions安裝
其實,VboxGuestAdditions安裝還是挺麻煩了,本人也是操作了好久才將增強擴充套件安裝完畢,故在此進行記錄,避免以後又遇到同樣的坑。
(1) 首先,當你安裝完VirtualBox後,在其安裝目錄下會有一個VboxGuestAdditions.ios
映象檔案,如果沒有的話,那麼可以點選這裡,下載指定版本的增強擴充套件。
(2) 然後,開啟VirtualBox,點選“設定”,點選“儲存”,選擇“新增虛擬光碟機”(空白碟片),然後選擇VBoxGuestAddition.iso
檔案。
(3) 然後,啟動並登陸虛擬機器,執行如下命令
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
執行mount /dev/cdrom /mnt/cdrom
命令掛載光碟機的時候,經常會出現如下的提示資訊:
mount: cannot remount /dev/sr0 read-write, is write-protected
這說明/dev/sr0是防寫的不能進行掛載。
當出現上述問題的時候,需要以讀寫模式掛載/dev/sr0,執行命令如下:
mount -o rw /dev/cdrom /mnt/cdrom
(4) 掛載完畢後,還需要安裝增強擴充套件鎖需要的依賴包
// 安裝相關依賴
yum install -y gcc make kernel-headers
// 必須安裝與linux核心版本匹配的kernel-devel
yum install -y "kernel-devel-uname-r == $(uname -r)"
(5) 最後,執行下面的命令,然後重啟虛擬機器就完成了增強擴充套件的安裝
// 安裝增強擴充套件
sh ./mnt/cdrom/VBoxLinuxAddtions.run
本作品採用《CC 協議》,轉載必須註明作者和本文連結