MENU

Vagrant 上手笔记

August 10, 2021 • Read: 1537 • Linux,编码

个人理解:Vagrant 是对 Virtualbox 操作的封装,可以快速批量操作多个虚拟机环境。

在实际开发过程中,可以与同事使用同一个镜像保证开发环境的统一性。

安装环境

安装步骤

  1. Virtualbox 虚拟机安装
  2. VirtualBox 扩展包
  3. Vagrant 安装
  4. 执行 vagrant version 检查是否安装成功:

    > vagrant version
    Installed Version: 2.2.18
    Latest Version: 2.2.18

基本命令

Box 操作

命令说明
vagrant box list查看 box 列表
vagrant box add [box_path] --name [box_name]添加 box
box_path:添加的box文件路径
box_name:box名称
vagrant box remove [box_name]移除 box

虚拟机操作

命令说明
vagrant init [box_name]新建虚拟机
vagrant up启动虚拟机
vagrant halt停止虚拟机
vagrant suspend暂停虚拟机
vagrant resume恢复虚拟机
vagrant reload重载虚拟机,并重新加载配置
vagrant destroy删除虚拟机
vagrant package打包虚拟机
vagrant status查看状态
vagrant ssh使用 vagrent用户直接登录虚拟机中
在虚拟机中可以使用:sudo -i 切换为 root 账户
CTRL + D 退出 ssh
vagrant ssh-config查看ssh 配置信息,可以使用其他工具 ssh 链接虚拟机
默认不支持密码登录,IdentityFile 是 私钥文件路径
如果需要密码登录,则需要在虚拟机中自行设置
vagrant provision重新执行 vagrantfile 中 provision 部分的 shell 命令
vagrant version查看 Vagrant 版本

插件安装

# 在访客系统上自动安装主机的 VirtualBox Guest Additions
vagrant plugin install vagrant-vbguest

# 使用国内镜像源 安装插件
vagrant plugin install 插件名称 --plugin-clean-sources --plugin-source https://gems.ruby-china.com/

配置文件

每次修改完配置文件需要 重载虚拟机

设置 虚拟机内存 和 CPU

config.vm.provider :virtualbox do |vb|
    # 设置虚拟机内存为 2048MB
    vb.memory = 2048
    # 设置虚拟机为 2核CPU
    vb.cpus = 2
end

设置映射目录

映射目录需要在虚拟机系统中 安装 VBoxGuestAdditions:

  1. 在 Vbox 虚拟机中挂载 VBoxGuestAdditions.iso 镜像
  2. 切换到 root 用户:sudo -i
  3. 查看虚拟光盘是否挂载:lsblk
  4. 挂载光盘到系统目录:mount /dev/sr0 /mnt/
  5. 更新并安装:yum update -y && yum install -y gcc kernel-devel
  6. 重启虚拟机,后安装:[root@localhost mnt]# ./VBoxLinuxAdditions.run
  7. 查看 "vboxguest" 是否被加载:[root@localhost ~]# lsmod |grep vbox
  8. 加载成功后关闭服务器 配置 Vagrantfile文件,保存后 启动虚拟机:vagrent up
# config.vm.synced_folder "[宿主机目录]", "虚拟机目录"

config.vm.synced_folder "./project", "/vagrant_data"

映射端口和 IP

# 将虚拟机 IP 映射到 192.168.33.10,宿主机可直接访问
config.vm.network "private_network", ip: "192.168.33.10"

# 端口映射 将虚拟机中的 80 端口映射到本机 8080 端口
config.vm.network "forwarded_port", guest: 80, host: 8080

# 默认端口转发只会使用 tcp,可以通过配置使用udp转发
config.vm.network "forwarded_port", guest: 80, host: 8080,protocol: "udp"

只是介绍简单的配置使用,详细配置方法参考文档:https://www.vagrantup.com/docs

Last Modified: September 12, 2021