vagrant 是什么
-
这是一个快速创建虚拟机的工具,能帮助我们快速的创建不同版本的虚拟机。支持多个版本的操作系统:mac、windows。比如可以通过vagrant 相关命令 给 virtual box 、vmware 创建出虚拟机。默认不配置是给virtual box 创建虚拟机。
-
拿VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。
相关网址
vagrant cloud 可以查到vagrant 提供的box
环境要求
- 安装对应操作系统版本的Vagrant
- 安装对应操作系统版本的Virtual Box
vagrant 命令
Vagrantfile 相关
# vagrant init [options] [name [url]]
# 不指定box 的名字,需要后面修改Vagrantfile 指定box 的信息(可以去vagrant cloud 查看)
$ vagrant init
# 指定box 的名字,这个名字必须是vagrant cloud 里面有的,乱写是没用的
$ vagrant init centos/7
# vagrant init 的效果是在当前文件夹下面创建出一个Vagrantfile 的文件,
# 这个文件使我们启动的虚拟机的配置文件。
box相关
# 自己下载好之后,添加到vagrant 中,添加到vagrant 的名字 centos/7 , 添加的是哪个box(推荐使用这种方式)
$ vagrant box add centos/7 /Users/haitao/Downloads/virtualbox.box
# 查看当前安装了那些box
$ vagrant box list
# 删除vagrant box
$ vagrant box remove
虚拟机相关
# 根据当前目录下的Vagrantfile 启动虚拟机
$ vagrant up
# 根据当前目录下的Vagrantfile 启动虚拟机,并执行provision里面的指令
# 因为里面的指令只有在第一次up 的时候会执行。
$ vagrant up --provision
# 根据当前目录下的Vagrantfile 进入虚拟机(交互模式)
$ vagrant ssh
# 根据当前目录下的Vagrantfile 关闭虚拟机
$ vagrant halt
# 根据当前目录下的Vagrantfile 暂停虚拟机
$ vagrant suspend
# # 根据当前目录下的Vagrantfile 销毁虚拟机
$ vagrant destroy
# 根据当前目录下的Vagrantfile 重启虚拟机
$ vagrant reload
# 根据当前目录下的Vagrantfile 重启虚拟机的时候执行Vagrantfile 里面的provision 的指令
# 默认是vagrant up 的时候启动一次
$ vagrant reload 一provision
# 执行Vagrantfile 里面的provision 的指令
$ vagrant provission
# 查看当前虚拟机的状态
$ vagrant status
# 打包虚拟机
$ vagrant package --base xx --output ./xx.box
Vagrantfile 文件的说明
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# box 的标识,可以去这个网址查看
# boxes at https://vagrantcloud.com/search.
config.vm.box = "centos/7"
# 是否检查更新box
# config.vm.box_check_update = false
# 端口转发,将虚拟机的80,映射成物理主机的8080
# config.vm.network "forwarded_port", guest: 80, host: 8080
# 端口转发还可以指定 映射到物理主机的那个ip上
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# 这个可以理解成设置静态ip,ip随便怎么写都可以。
config.vm.network "private_network", ip: "192.168.66.10"
# 这个也是静态ip,但是设置了这个选项,执行vagrant up 的时候,会让你选择使用物理主机的那个网卡作用桥接的网卡。
# 然后我们设置的ip 必须使我们选择的网卡的网段内的ip地址
# config.vm.network "public_network",ip:"192.168.10.110"
# 挂载目录到虚拟机中
# config.vm.synced_folder "../data", "/vagrant_data"
# 设置 虚拟机提供商的信息,默认是virtualbox。就是指定给那个虚拟机软件创建虚拟机
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
# 虚拟机启动的时候会执行里面的命令
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
离线下载vagrant box
国内镜像下载
- CentOS 6/7/8 修改链接中的版本号可以下载不同版本 http://mirrors.ustc.edu.cn/centos-cloud/centos/6/vagrant/x86_64/images/
- Ubuntu Server 14.04 https://mirrors.ustc.edu.cn/ubuntu-cloud-images/server/vagrant/trusty/current/
- Ubuntu Server 16.04 https://mirrors.ustc.edu.cn/ubuntu-cloud-images/server/xenial/current/
- Ubuntu Server 18.04 https://mirrors.ustc.edu.cn/ubuntu-cloud-images/server/bionic/current/
- Ubuntu Server 20.04 http://mirrors.ustc.edu.cn/ubuntu-cloud-images/focal/current/
官方直接下载
- Debian 8 https://app.vagrantup.com/debian/boxes/jessie64/versions/8.11.1/providers/virtualbox.box
- Debian 9 https://app.vagrantup.com/debian/boxes/stretch64/versions/9.12.0/providers/virtualbox.box
- Debian 10 https://app.vagrantup.com/debian/boxes/buster64/versions/10.4.0/providers/virtualbox.box
- laravel/homestead https://app.vagrantup.com/laravel/boxes/homestead/versions/9.5.1/providers/virtualbox.box
将离线下载好的box安装到vagrant
$ vagrant box add centos/7 /Users/haitao/Downloads/virtualbox.box
实操
添加离线下载好的box 到vagrant中
$ vagrant box add centos/7 /Users/haitao/Downloads/镜像/virtualbox.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos/7' (v0) for provider:
box: Unpacking necessary files from: file:///Users/haitao/Downloads/%E9%95%9C%E5%83%8F/virtualbox.box