Docker 提供了一個容器化的輕量環境,但是它太輕量,生命周期很短暫,(更多Docker 的內容可以查看我的另外一篇文章),
區別直接總結如下:
Docker基于Go語言開發,使用了LXC(Linux 內核容器虛擬化),cgroup,Linux內核等,直接依靠系統的功能來提供基礎設施,
Vagrant基于基礎設施自動化工具Chef或者Puppet,或者用戶提供腳本,來操縱鏡像,構建基礎設施,
這個話題有點反向操作,但是Vagrant還是有必要學習使用的!Docker才是現在最流行的基礎設施容器化的核心,vagrant跟它相比就是一個“空殼”,
有時候我們需要一個復雜定制化的作業系統環境(比如設定一個集群),那可以怎么做?
方式一:安裝一個虛擬機,通過圖形化界面,命令列終端來安裝,
這種方式不具有重復使用的效果,除了這個虛擬機能夠被匯出(Export),被別人使用Virtualbox 匯入使用,
這就要求對方的虛擬機軟體也的一樣的,有時候還會有版本兼容問題,鏡像也就僅此重用性,
方式二:使用Vagrant,它很好的遵循了Infrastructure-as-Code(基礎設施及代碼)
把一個虛擬機的構造,從一個腳本創造出來,
這種方式比前者更具備兼容性,因為vagrant把機器構建分為了主機部署+定制腳本執行兩個部分,
那么,虛擬機跟Vagrant的區別:
虛擬機軟體(VirtualBox,VMWare等等)提供的是用戶界面給用戶匯入基礎鏡像,加載啟動指定作業系統鏡像,可以帶界面的系統鏡像,自行通過手動操作,或者無界面終端敲命令進行后續使用定制等,
Vagrant基于Chef或者Puppet或者用戶提供腳本,來操縱鏡像,構建基礎設施,更重要的是通過配置腳本構建,
這里可以看到,使用后者Vagrant,只要遵循所有環境(服務器)相關的更改都通過provisioner(腳本/Puppet等),那么我們是可以隨時再次重做一個一樣的操作環境的,
Vagrant::Config.run do |config|
config.vm.provision :puppet, :manifest_file => "init.pp"
end
好,這里再次概括一下 Vagrant
vagrant是一個用來構建與管理虛擬機的一個工具,
它能自動化虛擬機作業系統的構建,支持多個虛擬機提供載體,可以是VirtualBox,VMware這些我們常用的虛擬機軟體;
下圖為虛擬機截圖,大家可以去試試,這三個虛擬機都是使用Vagrant構建的,

也能使用AWS作為載體,更多載體資訊可以閱讀:https://www.vagrantup.com/docs/providers
更多Vagrant 的概念請移步:https://www.vagrantup.com/intro
如下圖,Vagrant凌駕在其他虛擬機之上(當前也能操縱AWS亞馬遜云)

了解完概念,我們來看看Vagant這個組件用法:
兩個常用命令
啟動一個虛擬機:vagrant up
關閉虛擬機 : vagrant halt
(感謝三笠指出,之前記錯成stop命令了,一直記得要stop,結果寫成這個了)
還有最常用的:vagrant ssh 登錄主機,

本文只做概念闡述,知道Vagrant是什么,就是一個好的開始,
更多Vagrant Demo內容查看學委之前的Vagrant筆記,
持續學習持續開發,我是雷學委!
編程很有趣,關鍵是把技術搞透徹講明白,
創作不易,請多多支持,點贊收藏支持學委吧!
補充鏈接:
https://blog.scottlowe.org/2016/09/15/using-vagrant-with-aws/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292829.html
標籤:其他
