Vagrant

出自 Chan
前往: 導覽搜尋

前言

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