最近要開始深入學習分布式相關的東西了,那第一步就是在自己的電腦上安裝虛擬機器,以前在windows平台,我選擇用vmware workstation作為虛擬機器軟體,現在在mac系統下,感覺不是很適合了,然後就有朋友推薦我使用vagrant來在mac系統作為虛擬機器管理軟體,那麼本文我們就來聊一聊跟這貨相關的蠻有意思的東西。
vagrant是乙個基於ruby的工具,用於建立和部署虛擬化開發環境。它 使用oracle的開源virtualbox虛擬化系統,使用 chef建立自動化虛擬環境。我們可以使用它來幹如下這些事:
vagrant的執行,需要依賴某項具體的虛擬化技術,最常見的有virtualbox以及vmware兩款,早期,vagrant只支援virtualbox,後來才加入了vmware的支援。
為什麼我們要選擇vagrant呢?因為它有跨平台、可移動、自動化部署無需人工參與等優點。
在vagrant體系中,有個box(箱子)的概念,這優點類似於docker體系中的image(映象)。基於同乙個box,不同的人可以執行得到相同的內容。這個我們下文再詳細說。
因為我們知道vagrant依賴virtualbox,所以我們需要在安裝vagrant之前先安裝virtualbox,筆者初學時在網上搜尋了很久,發現大部分人的vagrant教程裡只說讓安裝vagrant並沒有說要提前安裝virtualbox,結果我按照他們的步驟安裝完vagrant以後,發現死活起不來,當時真的是鬱悶。後來又查了好久才知道這貨依賴虛擬化軟體,所以我又安裝了virtualbox,這樣我本地才把vagrant起來了。真的是坑!這個大家要注意了。
安裝過程很簡單,傻瓜式的一步一步點下去。
安裝過程依舊沒什麼難的,跟著提示一步一步next。
以及一定要開啟vt-x/amd-v硬體加速。
1. vagrant box基本命令
2. vagrant基本命令
1. 埠**
關於埠**的配置方式有以下兩種:
然後設定**規則:
新增對應的**規則,然後點選ok儲存,再使用命令vagrant up
啟動虛擬機器。
注意:一定不能使用vagrant reload命令,否則啟動後規則丟失無效。2. 網路配置
vagrant支援以下三種網路配置:
forwarded port(埠對映)
是指將宿主計算機的埠對映到虛擬機器上的某個埠上,訪問宿主計算機的該埠時,請求實際會被**到虛擬機器上指定的埠,配置檔案設定語法為:
config.vm.network :forwarded_port, guest: 80, host: 8889
優點:簡單、容易理解、容易實現外網訪問虛擬機器。
缺點:需對映很多埠時較麻煩、不支援在宿主機器上使用小於1024的埠來**(如:不能使用ssl的443埠來進行https連線)。
private network(私有網路)
這種網路配置下,只有主機可以訪問虛擬機器,如果多個虛擬機器設定定在同乙個網段也可以相互訪問,當然虛擬機器也是可以訪問外部網路的。配置語法如下:
config.vm.network "private_network", ip: "192.168.50.4" # 固定ip
還可以設定動態ip,配置語法如下:
config.vm.network "private_network", type: "dhcp"
優點:安全,只能自己訪問。
缺點:因私有原有,所以其他團隊成員不能和你協作。
public network(公有網路)
這種配置下,虛擬機器享受實體機一樣的待遇,一樣的網路配置,vagrant 1.3版本以後這種配置也支援設定固定ip,配置語法如下:
config.vm.network "public_network", ip: "192.168.50.4"
還可以設定橋接網絡卡,配置語法如下:
config.vm.network "public_network", bridge: "en1: wi-fi (airport)"
優點:方便團隊協作,別人可以訪問你的虛擬機器。
缺點:需要有網路,有路由器分配ip
3.共享目錄
有時候,我們希望虛擬機器能和我們的主機共享一些資料夾,這時候在vagrant的配置檔案中進行配置來達到共享目錄的目的。
vagrant的共享目錄型別有:
注意:配置完成,我們重新啟動虛擬機器時發現報錯了,這時候別慌,我們給出解決辦法傳送門使用
free -m
命令顯示當前虛擬機器記憶體: 當我們基於乙個box啟動乙個虛擬機器以後,我們在裡面部署了專屬自己的環境,那這個時候我們想要把自己的這套配置好的環境共享給別人怎麼辦呢?答案是將虛擬機器打包分發。命令如下:
新生成的box名稱是選填的,預設為package.box。vagrant package [--output new_box_name]
通過本文,我們對vagrant有了乙個大概的了解,那麼用起來也會很順手,用到乙個東西,我們還是要追求知其然知其所以然,這樣對我們自己負責,同時遇見問題我們也好下手去思考和解決。我就是我,不一樣的煙火~
前同事的「征服」
前同事的 征服 前幾天揚沙天氣,漫天黃沙,這sb中午跑到天橋上給手機貼膜 你丫怎麼不去山西小 煤窯裡找人貼膜去啊!這還不是最sb的 更sb的是,頂著落沙到了天橋上,還真有貼膜的,這天還出來做生意,小販真敬業 這還不是最sb的 更sb的是,前同事選了15塊的 進口膜 然後把手機一放,去旁邊吃飯,說待會...
雲計算 物聯網的前景更加誘人
物聯網概念的問世,打破了之前的傳統思維。過去的思路一直是將物理基礎設施和it基礎設施分開,一方面是機場 公路 建築物等,另一方面是資料中心 個人電腦 寬頻等。而在物聯網時代,鋼筋混凝土 電纜將與晶元 寬頻集成為統一的基礎設施,在此意義上,基礎設施更像是一塊新的地球。雲計算並沒有統一的規範定義。通常可...
常用的幾個vagrant命令
vagrant init 初始化 vagrant up 啟動虛擬機器 vagrant halt 關閉虛擬機器 vagrant reload 重啟虛擬機器 vagrant ssh ssh 至虛擬機器 vagrant suspend 掛起虛擬機器 vagrant resume 喚醒虛擬機器 vagran...