Vagrant
目錄
前言
Vagrant 是一種 VM 容器的實現,在 atlas 這邊可以找到許多別人做好的 box 只要將 box 引入就可以透過 Vagrantfile 開啟一個新的虛擬專案
安裝
Vagrant file
# -*- mode: ruby -*-
# vi: set ft=ruby :
#
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "10.10.10.16"
config.vm.hostname = "ubuntu16"
config.vm.synced_folder "D:/vagrant/ubuntu16/www", "/var/www"
config.vm.provider "virtualbox" do |vb|
vb.name="utuntu16"
vb.memory = "512"
end
end
當你使用 vagrant init box_name 引入一個 box 的時候,資料夾就會生成一個 Vagrantfile,自動生成的 Vagrantfile 有很多的設定 也有很多繁複的說明,上面這個檔案是我精簡過最常用設定內容
常用指令
vagrant box list
列出目前本機所有的 box
$ vagrant box list
ubuntu/precise64 (virtualbox, 20161020.1.1)
ubuntu/trusty64 (virtualbox, 20161020.0.11)
ubuntu/trusty64 (virtualbox, 20161020.0.12)
ubuntu/xenial64 (virtualbox, 20161029.0.0)
ubuntu/xenial64 (virtualbox, 20161102.0.0)
vagrant init box_name
起始 vm
當使用 vagrant init ubuntu/xenial64
的時候,vagrant 會在該目錄建立 Vagrantfile,可以 vagrant init
不存在本機的 box
那 vagrant up
的時候 vagrant 會去 atlas 抓遠方的檔案到你的電腦
vagrant box outdated --global
列出所有過期的 box
如果有 box 過期,會顯示過期資訊
$ vagrant box outdated --global
* 'ubuntu/xenial64' (v20161102.0.0) is up to date
* 'ubuntu/trusty64' (v20161020.0.12) is up to date
* 'ubuntu/precise64' (v20161026.0.0) is up to date
vagrant box update --box box_name
更新過期的 box
假設今天 ubuntu/xenial64 過期了,指令為 vagranx box update --box ubuntu/xenial64
vagrant box remove box_name
刪除 box
這個指令可以刪除指定的 box,但如果你有更新 box,就會有多個 box 在你的本機,後面會帶版號區分,以上面我 vagrant box list 的結果 我有多的 ubuntu/trusty64,所以刪除的時候要指定版號
vagrant box remove ubuntu/trusty64 --box-version 20161020.0.11
vagrant global-status
顯示目前 vm 的執行狀況
如果你在某專案的目錄下,直接執行 vagrant status
也可以看到狀態
$ vagrant global-status
id name provider state directory
-------------------------------------------------------------------------
ad4c986 default virtualbox running D:/vagrant/ubuntu16
3f6c6a8 default virtualbox poweroff D:/vagrant/docker
d1f985e default virtualbox poweroff D:/vagrant/ubuntu12
f60fbac default virtualbox running D:/vagrant/ubuntu14
vagrant up
啟動 vm
執行這個指令的時候,我們必須切換到該目錄,如果你想在任意處執行指令,只要加入 id 的參數即可,比如說現在 docker 是 poweroff 狀態 我們可以這樣啟動他
vagrant up 3f6
vagrant halt
關閉 vm
如果要關閉只要切到該目錄執行指令即可,或者是搭配 id
vagrant halt 3f6
vagrant reload
重啟 vm
如果要關閉只要切到該目錄執行指令即可,或者是搭配 id
vagrant reload 3f6
vagrant destroy
刪除 vm
Vagrantfile 包含的目錄僅是一個設定路口而已,所以你要移除專案光是砍掉這個資料夾是沒有用的,必須前往該目錄執行 vagrant destroy 或者是搭配 id 使用 ex: vagrant destroy 3f6