使用Vagrant(一):搭建Vagrant執行環境

麥滿屯發表於2014-12-11

1. 關於Vagrant

Vagrant是一個虛擬機器管理工具。可以實現快速的虛擬機器映象分發和使用。可以說,Vagrant使得虛擬機器技術的使用門檻大大降低。讓所有人都可以快速的使用虛擬機器投入到具體的開發工作中去。(尤其對於那些需要在伺服器環境中進行開發的人來說)。

2. 安裝Vagrant

Vagrant的安裝非常簡單,從它的主頁上可以方便的下載得到在各種作業系統下的安裝程式。我使用的是Win7作業系統。因此直接下載對應作業系統的安裝程式即可。Vagrant的安裝符合win7下安裝應用的一般過程。這就不用多說了。

要使用Vagrant,當然需要虛擬化技術的支援。目前Windows作業系統已經支援的HyperV的虛擬化技術。對於Win7作業系統來說,預設並沒有提供該項功能。需要單獨從Microsoft的網站上安裝。在其他的虛擬化技術中,由於VirtualBox是開源的,並且在各類作業系統中均有執行環境,因此在Vagrant一開始支援的虛擬化技術中,VirtualBox是首先得到支援的。目前VMWare的虛擬化技術也已經得到了Vagrant的支援。為了方便學習,我選擇VirtualBox作為虛擬化解決方案。當然,關於Vagrant使用VirtualBox的各類教程,也是最多的。

VirtualBox的安裝,同樣,從主頁下載程式後執行安裝即可。

3. 配置Vagrant和VirtualBox

Vagrant和VirtualBox安裝完成後,預設存放虛擬機器映象檔案的位置在系統盤。這對於大多數系統盤容量有限的人來說,很快就會收到“磁碟容量不足”的告警。通過必要的設定將映象資料移出系統盤。

3.1. 更改VirtualBox的映象檔案存放位置

具體步驟如下:

  1. 開啟VirtualBox,從選單項選擇 全域性設定 (快捷鍵是 Ctrl-G
  2. 選擇 常規 裡的 預設虛擬電腦位置(M)
  3. 設定為非系統盤的位置。
  4. 將原位置中的虛擬機器映象移動到新的位置。
  5. 如果在設定前已經安裝了虛擬機器,那麼在Windows 資源管理器中,選擇對應目錄中的 Vbox 檔案,即可將新目錄中的虛擬機器映象新增到VirtualBox中。

3.2. 更改Vagrant的映象儲存位置

Vagrant對於虛擬機器的管理分成兩個部分:Box和Machine。Box是指初始的未部署的虛擬機器映象檔案。這個檔案相當於是虛擬機器的一個模板,可以進行無限制次數的複製。Machine,是指處於可執行狀態下的虛擬機器。當在Vagrant中新增box是,預設Vagrant會將這些虛擬機器模板映象檔案存放在c:\User\<Username>\.Vagrant.d裡。因此,當使用Vagrant管理的虛擬機器模板映象較多時,這個目錄也是比較大的。可以轉移到其他磁碟分割槽上。方法是:

  1. c:\User\<username>\.vagrant.d 目錄移動到新的位置
  2. 設定 VAGRANT_HOME 環境變數指向新的位置即可。

4. 使用vagrant新增虛擬機器映象

4.1. 從網際網路新增虛擬機器映象檔案

在正式使用Vagrant前,建議先新增vagrant的映象檔案。使用如下指令新增虛擬機器模板映象檔案:

E:\vagrant_starter>vagrant box add ubuntu/trusty64

執行上面的指令後,系統會自動從網際網路下載相應的映象檔案。執行上述指令後,會得到如下的輸出:

E:\vagrant_starter>vagrant box add ubuntu/trusty64
==> box: Loading metadata for box 'ubuntu/trusty64'
    box: URL: https://vagrantcloud.com/ubuntu/trusty64
==> box: Adding box 'ubuntu/trusty64' (v14.04) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions
/14.04/providers/virtualbox.box
    box: Progress: 0% (Rate: 7168/s, Estimated time remaining: 21:27:41)

Progress 進展到100%時,相應的映象就新增到Vagrant中可供隨時克隆使用了。

TIP : 在VagrantCloud有大量已經制作好可供下載的基礎映象檔案。有興趣可以去看看,能減少自己做系統的時間。

4.2. 從本地新增映象檔案

從網際網路新增是最基本的方法。從本地已經下載好的檔案中新增映象檔案當然會更加的方便。要新增本地已下載好的映象檔案,執行如下指令即可:

E:\vagrant_starter>vagrant box add ubuntu/trusty64 file:///e:\download\trusty-server-cloudimg-amd64-vagrant-disk1.box

5. 初始化虛擬機器

開始使用虛擬機器,首先需要將虛擬機器模板映象匯入“工作環境”。如前所屬,已經新增了 ubuntu/trusty64 映象之後,可以之間使用如下指令完成相關虛擬機器的初始化。

E:\vagrant_starter>vagrant init ubuntu/trusty64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

如果以前沒有使用 vagrant box add 指令,直接使用init命令時,會先新增box,完成後再執行初始化操作。

6. 使用虛擬機器

6.1 啟動虛擬機器

啟動虛擬機器只需要一個指令,並且可以得到一下輸出:

E:\vagrant_starter>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: git-server_default_1418350291527_32287
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => E:/vagrant_starter

6.2 登入虛擬機器

要登陸虛擬機器可以使用 Vagrant ssh 命令登入虛擬機器系統。登入後可以看到:

E:\vagrant_starter>vagrant ssh
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Fri Dec 12 02:12:05 UTC 2014

  System load:  0.36              Processes:           91
  Usage of /:   2.8% of 39.34GB   Users logged in:     0
  Memory usage: 21%               IP address for eth0: 10.0.2.15
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


vagrant@vagrant-ubuntu-trusty-64:~$

如果你得到了以上的輸出顯示,好的,你已經成功登入到你的 私有 伺服器上了。在你自己的伺服器上撒潑打滾吧,在這個伺服器上,你就是 上帝

7. 停止或刪除虛擬機器

要停止虛擬機器的執行,可以使用如下指令:

  • 虛擬機器關機:E:\vagrant_starter>vagrant halt

  • 虛擬機器掛起:E:\vagrant_starter>vagrant suspend

  • 刪除虛擬機器:E:\vagrant_starter>vagrant destory

    危險:虛擬機器刪除後,所有在虛擬機器中做的改動都不再存在。如果重新使用,需要再次使用init命令初始化。此時得到的將是一個全新的虛擬機器。所以,注意安全。

8. 參考文件:

  1. Vagrant官方文件: https://docs.vagrantup.com/v2/
  2. 小硬碟傷不起-將Vagrant移出系統盤的方法: http://wing2south.com/post/44371306891/vagrant/

相關文章