您好,登錄后才能下訂單哦!
Vagrant是一個軟件,可以自動化虛擬機的安裝和配置流程,支持 VirtualBox 、VMware 、AWS 作為虛擬機
以 VirtualBox 為例,步驟如下:
Windows 10 系統中 需要關閉 Hyper-v , 小米筆記本中 biso 中找不到 虛擬化配置,關閉 Hyper-v 就可以了
1.安裝 VirtualBox
官網下載地址:https://www.virtualbox.org/wiki/Downloads
下載安裝包,雙擊安裝,默認即可
2.安裝 Vagrant
官網下載地址:https://www.vagrantup.com/downloads.html
下載安裝包,雙擊安裝,一路默認即可,完成后提示重啟
Vagrant 使用 - 創建虛擬機
vagrant 中已經打包好的虛擬機,稱為 box
box 列表:https://app.vagrantup.com/boxes/search
操作系統 Ubuntu
3.安裝 ubuntu
添加 box 鏡像:
vagrant box add ubuntu/trusty64
切換到開發目錄:
初始化
vagrant init ubuntu/trusty64
啟動 虛擬機
vagrant up
登錄
vagrant ssh
現在就已經登錄到 ubuntu 系統了,可以定制安裝 自己喜歡的開發環境了
Vagrant 指令
vagrant -v 查看版本號
vagrant box list 查看本地 box
vagrant box add 添加 box
vagrant box remove 刪除本地指定的box
虛擬機操作命令
vagrant init 初始化配置 vagrantfile
vagrant up 啟動虛擬機
vagrant ssh ssh 登錄虛擬機
vagrant suspend 掛起虛擬機
vagrant reload 重啟虛擬機
vagrant halt 關閉虛擬機
vagrant status 查看虛擬機狀態
vagrant destory 刪除虛擬機
config.vm.box = 'ubuntu/xenial64'
config.vm.hostname = 'php-dev'
NAT : 缺省創建,用于讓vm可以通過host轉發訪問局域網甚至互聯網;
host-only : 只有主機可以訪問vm,其他機器無法訪問它;
bridge : 此模式下vm就像局域網中的一臺獨立的機器,可以被其他機器訪問。
config.vm.network 'forwarded_port', guest: 80, host:8080
# guest 為虛擬機端口, host,主機端口
# 將主機的8080端口請求,轉發到vm的80端口,這樣訪問http://host:8080 就相當于訪問http://vm:80了
# guest和host是必須的,還有幾個可選屬性:
# guest_ip:字符串,vm指定綁定的Ip,缺省為0.0.0.0
# host_ip:字符串,host指定綁定的Ip,缺省為0.0.0.0
# protocol:字符串,可選TCP或UDP,缺省為TCP
config.vm.network "private_network", ip: "192.168.12.144" # 指定 ip
config.vm.network "private_network", type:'dhcp' # 不指定 ip ,使用動態 ip
config.vm.network 'public_network', ip: '192.168.123.23'
共享目錄其實是以掛載的形式,掛載到虛擬機指定目錄下
config.vm.synced_folder '主機目錄', '掛載的目錄'
通用配置對于不同provider是通用的,常用的通用配置如下:
config.vm.provider "virtualbox" do |vb|
# 通用配置
vb.name = "php-dev" # virtualbox管理控制臺中的虛機名稱
vb.gui = true # 啟動時,自動打開virtual box的窗口,缺省為false
vb.memory = "2048" # vm內存,單位 MB
vb.cpus = 2 #設置CPU個數
# 個性配置
#修改vb.name的值
v.customize ["modifyvm", :id, "--name", "mfsmaster2"]
#如修改顯存,缺省為8M,如果啟動桌面,至少需要10M,如下修改為16M:
vb.customize ["modifyvm", :id, "--vram", "16"]
#調整虛擬機的內存
vb.customize ["modifyvm", :id, "--memory", "1024"]
#指定虛擬CPU個數
vb.customize ["modifyvm", :id, "--cpus", "2"]
#增加光驅:
vb.customize ["storageattach",:id,"--storagectl", "IDE Controller","--port","0","--device","0","--type","dvddrive","--medium","/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"]
#注:meduim參數不可以為空,如果只掛載驅動器不掛在iso,指定為“emptydrive”。如果要卸載光驅,medium傳入none即可。
#從這個指令可以看出,customize方法傳入一個json數組,按照順序傳入參數即可。
#json數組傳入多個參數
v.customize ["modifyvm", :id, "--name", “mfsserver3", "--memory", “2048"]
end
當定義了多主機之后,在使用vagrant命令的時候,就需要加上主機名,例如vagrant ssh web;也有一些命令,如果你不指定特定的主機,那么將會對所有的主機起作用,比如vagrant up;你也可以使用表達式指定特定的主機名,例如vagrant up /follower[0-9]/。
Vagrant.configure("2") do |config|
# 一個節點就是一個虛擬機
config.vm.define "web" do |web|
web.vm.box = "apache"
end
config.vm.define "db" do |db|
db.vm.box = "mysql"
end
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# box name 盒子名稱
config.vm.box = "ubuntu/xenial64"
# 登錄信息
config.ssh.username = 'leesin'
config.ssh.password = '123456'
# vm hostname 虛擬機主機名
config.vm.hostname = 'php-dev'
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# network 網絡配置
# 端口轉發
config.vm.network 'forwarded_port', guest: 80, host:8080 # tcp 轉發端口
config.vm.network 'forwarded_port', guest:3306, host:33060 # mysql 連接轉發
# 私有網絡
# config.vm.network "private_network", type: "dhcp"
# 橋接網絡
# config.vm.network "public_network", ip: '192.168.33.10'
# 共享目錄
config.vm.synced_folder "D:\\", "/data/wwwroot"
# vm provider通用和個性化設置
config.vm.provider "virtualbox" do |vb|
# 通用配置
vb.name = "php-dev" # virtualbox管理控制臺中的虛機名稱
# vb.gui = true # 啟動時,自動打開virtual box的窗口,缺省為false
vb.memory = "2048" # vm內存,單位 MB
vb.cpus = 2 #設置CPU個數
# 個性配置
end
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
參考文檔:
https://segmentfault.com/a/1190000000264347
https://www.jianshu.com/p/2fc53a3e91bf
推薦鏈接:https://blog.csdn.net/u011781521/article/details/80291765
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。