Vagrant 环境搭建

概述

Vagrant是一个非常强大的虚拟机管理工具,可以帮助开发者快速创建虚拟化环境。因此,我就是想利用Vagrant、Vbox、Docker搭建一套自己的LNMP开发环境,大致思路如下:
(1) 首先,使用Vagrant、Vbox快速的创建Linux环境,同时将自己Windows下的工作目录workspace映射到Linux环境,这样在Windows下对工作目录的任何修改都会同步到Linux环境。
(2) 然后,在Linux环境下安装Docker,利用Docker创建自己需要的镜像,例如:Nginx、Mysql等,然后启动容器,将Linux下的工作目录映射Docker容器中。

注意:这里只简单的介绍使用Vagrant创建Linux虚拟环境的过程,以及记录遇到的问题。

安装Vagrant

首先,需要安装Vagrant和VirtualBox,安装过程不再详述,这里只列出相关的版本信息:

版本号
Vagrant 2.2.9
VirtualBox 6.0.22

安装Box

假设在Windows环境下,你的工作目录为D:/workspace,这里介绍Box安装的两种方式:第一种是在线下载安装;第二种是导入本地的Box

1. 在线下载Box

  • 首先,在官网寻找所需要的Box,例如:centos/7
  • 然后,在工作目录workspace中执行命令vagrant init centos/7进行初始化,这里的 “centos/7”就是Box的名称
  • 初始化完毕后,在workspace目录中会生成一个Vagrantfile文件,这就是非常重要的配置文件
  • 然后,执行vagrant up来启动Box,启动过程会自动下载Box,启动成功后,在workspace目录会生成一个.vagrant目录,存放的是Box虚拟机相关的文件
  • 最后,执行vagrant ssh即可远程连接Box,也可以通过xshell远程登录,初始账号和密码都是 “vagrant”

2. 导入本地Box

  • 首先,在官网寻找所需要的Box,例如:centos/7,然后将Box直接下载到本地
  • 然后,在工作目录workspace中执行命令vagrant box add将本地的Box导入,例如:
     // centos-7是自定义的Box名称,D:/workspace/centos-7.box是Box的路径
     vagrant box add centos-7 D:/workspace/centos-7.box
  • 然后,执行命令vagrant init centos-7进行初始化,这里的 “centos-7”就是自定义的Box的名称
  • 初始化完毕后,在workspace目录中会生成一个Vagrantfile文件,这就是非常重要的配置文件
  • 然后,执行vagrant up来启动Box,启动成功后,在workspace目录会生成一个.vagrant目录,存放的是Box虚拟机相关的文件
  • 最后,执行vagrant ssh即可远程连接Box,也可以通过xshell远程登录,初始账号和密码都是 “vagrant”

遇到的问题

在执行vagrant up命令启动Box的时候,经常会报错,有的问题是由于Vagrant和Vbox的版本不匹配,有的问题是其它原因。这里,主要是记录一下本人安装过程中遇到的问题及解决方式。

问题1

$ vagrant up
Vagrant failed to initialize at a very early stage:
There was an error running VBoxManage. This is usually a permissions
problem or installation problem with VirtualBox itself, and not Vagrant.
Please note the error message below (if any), resolve the issue, and
try Vagrant again.

请求的操作需要提升。 (740)

问题原因: 由于VboxManage.exe权限或者兼容性的原因
解决方式: 在VirtualBox的安装目录中找到VboxManage.exe,然后,右键->属性->兼容性,不勾选“以兼容模式运行此程序”和“以管理员身份运行此模式”。修改完毕后,再次执行vagrant up命令,不再出现上述问题。


问题2

==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,

问题原因: 其实这并不是错误信息,而是普通的提示信息,根据信息内容可知没有安装guest additions,即VirtualBox的增强扩展,没有增加扩展Windows环境的工作目录与Linx环境的工作目录就没法双向同步,所以最好还是安装一下guest additions

VboxGuestAdditions增强扩展

1. VboxGuestAdditions简介

VboxGuestAdditions的功能非常强大,下面简单列举几条:

  • 鼠标驱动:如果没有安装VboxGuestAdditions,在虚拟机中无法显示鼠标的,如果想使用鼠标,则只能按Rigth Ctrl从虚拟机切换到主机,鼠标才能移动;而安装了VboxGuestAdditions,鼠标可以无缝移动。
  • 无缝窗口:如果没有安装VboxGuestAdditions,虚拟机窗口就是一个独立的窗口;而安装了VboxGuestAddition,虚拟机窗口就像嵌入在主机桌面一样,非常方便。
  • 共享目录:安装了VboxGuestAddition,可以将主机的一个目录与虚拟机的目录进行映射,这样主机的目录就能和虚拟机的目录保持同步共享。
  • 共享剪切板:安装了VboxGuestAddition,在主机复制的内容可以直接在虚拟机进行粘贴,反之亦然。

VboxGuestAdditions安装

其实,VboxGuestAdditions安装还是挺麻烦了,本人也是操作了好久才将增强扩展安装完毕,故在此进行记录,避免以后又遇到同样的坑。

(1) 首先,当你安装完VirtualBox后,在其安装目录下会有一个VboxGuestAdditions.ios镜像文件,如果没有的话,那么可以点击这里,下载指定版本的增强扩展。

(2) 然后,打开VirtualBox,点击“设置”,点击“存储”,选择“添加虚拟光驱”(空白盘片),然后选择VBoxGuestAddition.iso文件。

(3) 然后,启动并登陆虚拟机,执行如下命令

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

执行mount /dev/cdrom /mnt/cdrom命令挂载光驱的时候,经常会出现如下的提示信息:

mount: cannot remount /dev/sr0 read-write, is write-protected

这说明/dev/sr0是写保护的不能进行挂载。
当出现上述问题的时候,需要以读写模式挂载/dev/sr0,执行命令如下:

mount -o rw /dev/cdrom /mnt/cdrom

(4) 挂载完毕后,还需要安装增强扩展锁需要的依赖包

// 安装相关依赖
yum install -y gcc make kernel-headers
// 必须安装与linux内核版本匹配的kernel-devel
yum install -y "kernel-devel-uname-r == $(uname -r)"

(5) 最后,执行下面的命令,然后重启虚拟机就完成了增强扩展的安装

// 安装增强扩展
sh ./mnt/cdrom/VBoxLinuxAddtions.run
本作品采用《CC 协议》,转载必须注明作者和本文链接
greedyco
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!