VAGRANT 和 Docker的使用場景和區別

2021-07-24 03:25:38 字數 1469 閱讀 3852

關於vagrant:

vagrant是乙個基於ruby的工具,用於建立和部署虛擬化開發環境。它 使用oracle的開源

virtualbox

虛擬化系統,使用 chef建立自動化虛擬環境

vagrant的打包功能類似vmware的轉殖,打包之後可以拿給其他人去用,統一的平台,統一的軟體結構,作為開發測試的乙個公共平台實在是極好的~

重新封包的box拿到其它機器上去執行,依舊會存在網絡卡重新生成的情況,需要手動清除(僅針對使用 private_network的模式)

唯一的不同點就是vmware的轉殖出來乙個虛機很大很大,而vagrant重新封包依舊是小巧玲瓏~

vagrant並不提供虛擬化技術,本質上是乙個虛擬機器外掛程式,通過虛擬機器的管理介面來管理虛擬機器,讓使用者更輕鬆的進行一些常用配置,比如:cpu/memory/ip/disk等分配。並且提供了一些其它的管理操作:比如開機執行指定命令,映象二次打包,外掛程式編寫等等

vagrant就是你的開發環境的部署工具;而docker是你的執行環境部署工具。

為何還需要乙個開發環境部署工具呢,很多國內程式設計師一定會問,我們平時隨隨便便就把乙個wamp設定好了,簡單方便,開包即用。

問題是,現實的開發環境會比這複雜太多太多。資料庫、快取伺服器、反向**伺服器、搜尋引擎伺服器(例如sunspot或elastic search)、**伺服器、實時推送伺服器。資料庫大多數時還不止一種,為匹配各種架構一般創業公司都會起mysql及postgres,與此同時,根據你的業務需求可能還需要添入nosql或管理時間序列等各類資料庫。這麼多種不同的伺服器,需要被配置並且完美地在一起配合工作,相信任何程式設計師老司機都知道,不是易事。即使你對每一塊都很熟悉,每一次從頭配起,你總會在某些地方栽跟頭,即使依照事先做好的部署指令碼來做,你還要保障每個軟體工具的版本一致,然後指令碼執行準確無誤。即使真的有老司機熟練到每一次伺服器遷移或者伺服器scale up,都能準確無誤地部署,那還是躲不過乙個事實:老司機有一天也會離職,這項精確的部署技能如何得以香火延續?你教得再好,那也只代表你教的,線上運維問題就像打鼴鼠遊戲,此處撲滅,彼處著火。

上述實際部署中會遇到的問題,不知道難倒過多少運維老司機,甚至乙個小問題、小遷移,就能讓他們痛不欲生、徹夜奮戰。放假前五分鐘能搞定的事,放假後愣是得用五個小時對付。

轉而去思考一番,乙個非常順其自然的方法就是把當前的開發環境做個映象,然後拷到u盤裡,這樣每乙個新員工加入直接對著u盤安裝就行(我有朋友的公司就這麼幹的!)。但這還是解決不了太多太多開發環境的設定問題,如果開發環境更迭了呢?再做乙個u盤麼?其他人再安裝一遍麼?

這個時候,vagrant的就出現了,而vagrant的出現顯然就是為了解決以下兩個重點問題:(1)開發環境快速部署 (2)開發環境更迭。少乙個點沒解決好,vagrant的存在都是偽需求。

說白了vagrant就是乙個普普通通的裝了乙個linux的virtualbox虛擬機器,配以vagrant 團隊為之開發的一系列套件,輔助完成諸如安裝初始化、檔案同步、ssh、部署環境公升級、功能外掛程式安裝等等一些列問題的開發環境部署套件。也沒什麼好神秘的

vagrant和virtualbox修改預設位置

原因 因為vagrant啟動在c盤,很快爆滿了。需要移動到其他盤 解決uuid重複問題 修改路徑教程 具體的步驟如下 在vagrant中新增box時,載入目錄預設在 vagrant.d 具體的目錄結構是c users your username vagrant.d 由於是在c盤中,在一些配置不高的機...

征服誘人的Vagrant!

最近要開始深入學習分布式相關的東西了,那第一步就是在自己的電腦上安裝虛擬機器,以前在windows平台,我選擇用vmware workstation作為虛擬機器軟體,現在在mac系統下,感覺不是很適合了,然後就有朋友推薦我使用vagrant來在mac系統作為虛擬機器管理軟體,那麼本文我們就來聊一聊跟...

常用的幾個vagrant命令

vagrant init 初始化 vagrant up 啟動虛擬機器 vagrant halt 關閉虛擬機器 vagrant reload 重啟虛擬機器 vagrant ssh ssh 至虛擬機器 vagrant suspend 掛起虛擬機器 vagrant resume 喚醒虛擬機器 vagran...