Vagrant是構建在虛擬化技術之上的虛擬機運行環境管理工具。html
主要的功能:
1. 創建和刪除虛擬機
2. 配置虛擬機運行參數
3. 管理虛擬機運行狀態
4. 自動化配置和安裝開發環境
5. 打包和分發虛擬機運行環境
vagrant能夠支持多種虛擬環境,例如 VirtualBox, VMware, AWS, OpenStack等docker
我的:跨平臺、可移動、自動化部署無需人工參與
公司:節省人力成本、統一開發環境網絡
# 查看已有的box $ vagrant box list # 新建加一個box $ vagrant box add [這次鏡像名稱] [源鏡像] # 刪除指定box $ vagrant box remove [名稱] # 初始化配置vagrantfile $ vagrant init # 啓動虛擬機 $ vagrant up # ssh登錄虛擬機 $ vagrant ssh $ 掛起虛擬機 # vagrant suspend # 重啓虛擬機 $ vagrant reload # 關閉虛擬機 $ vagrant halt # 查看虛擬機狀態 $ vagrant status # 刪除虛擬機 $ vagrant destroy # 打包當前環境下爲 box鏡像 $ vagrant paskage --output xxx.box
初始化虛擬機步驟:ssh
1. 添加鏡像 $ vagrant box add [box名稱名稱] [路徑/名稱.box] 2. 初始化虛擬機配置 $ vagrant init [box名稱] 3. 啓動虛擬機 $ vagrant up
# host=本機端口,guest=虛擬機端口 config.vm.network "forwarded_port", host:8888, guest:81
2. 共享目錄 將本機具體目錄和虛擬機共享ide
三種可選共享方式:
1. Basic Usage # 基礎共享方式【默認】
2. NFS # Mos系統 共享目錄方式
3. SMB # Windows系統 共享目錄方式
主要是爲了使本機的文件更改以後可以更快的同步到虛擬機中,更快的生效工具
# 本機目錄同步到虛擬機目錄 :nfc[可選項] config.vm.synced_folder "/Users/vincent/code/", "/home/www", :nfc => true 注意: # 1. 須要配置私有網絡IP # 2. Nginx 的sendfile on 須要改成 off;否則同步目錄速度較慢
3. 網絡配置 三種網絡配置方式學習
公有網絡優化
# 要和本機網段一致 config.vm.network "public_network", ip: "192.168.33.10"
私有網絡阿里雲
config.vm.network "private_network", ip: "192.168.33.10"
# 設置虛擬機主機名 config.vm.hostname = "ueba" config.vm.provider "virtualbox" do |vb| # 設置虛擬機內存 1024M vb.memory = "1024" # 設置虛擬機名稱 vb.name = "vm_name" # 設置cpu 數量 vb.cpus = 2 end
一、docker只能執行docker所定義的容器。spa
二、docker缺少靈活的隔離方案(docker只能運行在Linux主機環境中)。
三、 vagrant能夠支持多種虛擬環境,例如 VirtualBox, VMware, AWS,
四、 vagrant 能夠更好的配置網絡和文件共享。好比:vagrant能夠給一個VM配置靜態IP和端口數據轉發。不論你使用的VirtualBox仍是 VMware,vagrant均可以很好的完成配置。對於文件共享來講,vagrant提供了多種文件掛載方案供你考慮。若是你使用了docker,那麼 這些事情就都須要你親自動手來作了。
5. vagrant 1.6中集成了docker-based development environments。因此在MAC和Windows環境中,vagrant會自動啓動一個虛擬機來執行docker,這樣就達到了docker的跨平臺化。而背後例如網絡,文件等等操做都是vagrant默默完成的。
6. 針對於場景來講,Vagrant 適合用來管理虛擬機,而docker適合用來管理應用環境。