使用Vagrant快速建立虛擬機器

2021-09-19 04:46:43 字數 4749 閱讀 2035

摘要:手動建立虛擬機器非常不方便,重灌起來也很麻煩,打包成映象的話則不易修改,很難進行版本控制,也無法移植到雲端。vagrant可以將建立虛擬機器的過程**化,有效地解決了以上所提的痛點。

日期: 2016-06-19

本文所有操作是在macbook上進行的,windows上的操作大部分一致,但是可能會有一些小問題。

1. 安裝virtualbox

2. 安裝vagrant

3. 建立虛擬機器

mkdir vagrant-ubuntu

cd vagrant-ubuntu

vagrant box add ubuntu/trusty64

vagrant init ubuntu/trusty64

vagrant up --provider virtualbox

vagrant ssh

vagrant init:生成建立虛擬機器的所依賴的vagrantfilevagrant up:建立虛擬機器

vagrant ssh:ssh登陸虛擬機器

不妨檢視一下vagrant自動生成的vagrantfile, 我刪除了所有注釋:

vagrant.configure(2) do |config|

config.vm.box = "ubuntu/trusty64"

end

vagrantfile的內容非常簡單,僅定義虛擬機器所依賴的boxubuntu/trusty64box相當於虛擬機器所依賴的映象檔案。因此,這裡建立的虛擬機器是ubuntu trusty(14.04)。如果你需要建立其他linux發行版例如debian或者centos,可以在這裡搜尋對應的box.

vagrant虛擬機器的預設配置:

預設配置並不一定滿足開發需求,下一小節將介紹如何進行自定義配置。

1. 修改vagrantfile

vim vagrantfile
可以通過注釋理解每個自定義配置的含義。

vagrant.configure(2) do |config|

# 設定虛擬機器的box

config.vm.box = "ubuntu/trusty64"

# 設定虛擬機器的主機名

config.vm.hostname="ubuntu"

# 設定虛擬機器的ip

config.vm.network "private_network", ip: "192.168.0.2"

# 設定主機與虛擬機器的共享目錄

config.vm.synced_folder "~/desktop/share", "/home/vagrant/share"

# virtaulbox相關配置

config.vm.provider "virtualbox" do |v|

# 設定虛擬機器的名稱

v.name = "ubuntu"

# 設定虛擬機器的記憶體大小

v.memory = 2048

# 設定虛擬機器的cpu個數

v.cpus = 1

end# 使用shell指令碼進行軟體安裝和配置

config.vm.provision "shell", inline: <

# 安裝docker 1.11.0

end

2. 在桌面上建立share目錄主機上的share目錄將與虛擬機器內的/home/vagrant/share目錄內容實時同步

mkdir ~/desktop/share
3. 建立虛擬機器

vagrant destroy

vagrant up --provider virtualbox

4. ssh免密碼登陸使用vagrant ssh命令登陸虛擬機器必須切換到vagrantfile所在的目錄,而直接使用虛擬機器ip登陸虛擬機器則更為方便:

ssh [email protected]
此時ssh登陸需要輸入虛擬機器vagrant使用者的密碼,即vagrant將主機的公鑰複製到虛擬機器的authorized_keys檔案中即可實現ssh無密碼登陸:

cat $home/.ssh/id_rsa.pub | ssh [email protected] -p 2222 'cat >> $home/.ssh/authorized_keys'
其中,2222是主機ssh登陸虛擬機器的**埠,可以通過以下命令檢視:

vagrant ssh-config | grep port

port 2222

此時ssh登陸虛擬機器則不再需要輸入密碼。

5. 關於provision

vagrant中有下面一段內容:

# 使用shell指令碼進行軟體安裝和配置

config.vm.provision "shell", inline: <

# 安裝docker 1.11.0

其實就是嵌入了一段shell指令碼進行軟體的安裝和配置,這裡我安裝了docker,當然也可以安裝其他所需要的軟體。修改此段內容之後,重新建立虛擬機器需要使用"--provision"選項。

vagrant halt

vagrant up --provider virtualbox --provision

其實,vagrant支援建立docker provision,可以用於建立docker主機,功能很多,但是用起來不如使用shell指令碼靈活。

vagrant與docker都可以用於快速建立開發環境,但是,vagrant是用於建立虛擬機器的,而docker是用於建立容器的,所以兩者的功能並不相同。實際工作中,我兩個都用,vagrant僅用於建立虛擬機器作為容器執行環境,而docker用於開發和執行實際應用。這樣實現了開發環境兩層隔離,macbook不需要安裝多餘的軟體,vagrant所建立的虛擬機器也僅需要安裝docker等少數軟體,這樣更加方便和安全。

vagrant是基於vagrantfile建立虛擬機器,而docker是基於dockerfile建立容器映象。兩者都是將應用的執行環境**化,所以非常靈活,易於重複,也可以作版本控制。但是,vagrantfile的語法其實非常簡陋,遠沒有dockerfile靈活。因此,vagrant僅適合於建立開發環境,或者作為容器執行的環境,並不適合打包應用。

vagrant的功能與docker machine功能一致,都是用於建立虛擬機器。但是,docker machine是專用於建立docker主機的,而vagrant可以用於建立不同的開發環境。理論上docker使用者使用docker machine會更方便,但是我並沒有選擇docker machine,因為感覺並沒有實際需求。docker machine所建立的本地虛擬機器預設基於docker專用的linux發行版boot2docker,雲端虛擬機器預設基於ubuntu,對其他linux發行版的支援還處於實驗階段。而vagrant穩定支援更多linux發行版,所以可以滿足更多需求。vagrant可以通過vagrantfile進行自定義配置,而docker machine並沒有對應功能,因此vagrant用於建立虛擬機器更加靈活。

使用vagrant建立linux虛擬機器

3 重啟,並在cmd視窗輸入vagrant,出現提示資訊說明安裝成功 4 初始化 vagrant init centos 7,用這個初始化box的操作,會生成vagrant的配置檔案vagrantfile 這是,在c盤賬戶資料夾下會出現vagrantfile檔案。5 初次啟動本地映象 vargran...

vagrant建立虛擬機器

關於vagrant,維基百科給出了定義 vagrantis an open source software product for building and maintaining portable virtual development environments.看到了吧,是乙個搭建虛擬開發環境的...

建立vagrant 映象 vagrant基本使用

簡介 vagrant是用於構建和管理虛擬機器環境的工具。官方 以mac系統為例 開啟命令列終端iterm2.輸入以下命令 mkdir p vms centos7 1 cd vms centos7 1 vagrant init centos 7 vagrant up vagrant ssh 以上幾步就...