Vagrant 環境搭建

greedyco發表於2020-07-11

概述

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 協議》,轉載必須註明作者和本文連結

相關文章