VirtualBox 使用心得——文件互联和网络互联
前言
VirtualBox 是一个非常流行的免费虚拟机软件,最近在学习 Docker 的时候,发现 Docker For Windows 需要 Windows10 Pro 和 Windows Server 2016 及以上的环境,而我本机的系统是 Windows10 Home 无法使用 Docker For Windows,只能使用 Docker Toolbox,Docker Toolbox 的原理就是在 VirtualBox 中运行一个 Linux 镜像然后通过这个虚拟机运行 Docker。一开始以为通过这个虚拟机,Windows 就能完全模拟出 Linux 中 Docker 的行为。但是,当我使用 docker-compose 构建容器的时候发现使用 volume 映射文件的逻辑十分离奇,会把我宿主机上的文件映射成文件夹,导致容器内的服务完全无法工作。
这时候必须有一个解决方案来验证我的编写的 Docker 容器是否正确,这时候就需要使用到 Linux 虚拟机,刚好在安装 Docker Toolbox 时安装了 Virtual Box 就直接使用 Virtual Box 进行 Ubuntu Linux 虚拟机的安装和验证,使用虚拟机安装完 Ubuntu 就面临虚拟机和主机网络互联和文件互联的问题。
VirtualBox 虚拟机和主机的网络互联
VirtualBox 创建虚拟机的时候默认会配置一张 NAT 网卡,这张网卡能保证创建的虚拟机能够通过主机的网络访问到互联网,原理就是虚拟机通过 NAT 经过主机访问外部网络,此时虚拟机能够访问主机而主机不能访问虚拟机。这时我有一个需求就是希望在主机打开一个网页验证我在虚拟机中通过 Docker 部署的 Web 应用是否正确运行及其运行效果,为什么会有这个需求呢,因为电脑比较渣,分配的虚拟机配置不会太高,虚拟机跑了服务端之后,不希望再跑一个客户端来验证服务端的运行,把运行客户端的负担交给主机可能获得更好的体验。
要实现这个需求就要求主机必须能够通过网络访问虚拟机。要实现这个要求最简单的方法就是再虚拟机设置中给虚拟机新增一张网卡并且设置成“桥接网卡”模式,之后虚拟机和主机就能实现网络互联。在虚拟机中使用 ifconfig
命令查看 ip 地址,找到 192.168.1.* 的地址,打开主机的浏览器输入 192.168.1.* 就能够查看到虚拟机中的部署的应用的效果。
VirtualBox 虚拟机和主机的文件互联
因为配置的虚拟机性能不会很好,所以基本上所有的开发和打包工作都会在主机上进行,如果频繁的使用复制粘贴的话会十分的繁琐,这时候使用 VirtualBox 提供的共享文件夹功能就能够很简单的实现文件的共享互联操作。
Step1. 安装增强插件
需要实现 VirtualBox 共享文件夹功能必须要安装增强插件,如图所示安装增强插件
Step2. 选择需要共享的文件夹
接着如图所示选择需要共享的文件夹
Step3. 修改权限
默认情况下,共享文件夹下的文件的权限为770(rwxrwx—),一般的登录用户不能够操作文件夹内的文件,而且并不能使用chmod
命令将权限修改成777(rwxrwxrwx)。查看文件的详情可以看到共享之后的文件的拥有者为root,用户组为vboxsf,这样要么每次查看文件都需要使用 sudo 命令要么直接登陆 root 用户查看,两种方法都十分的不方便。
其实使普通的登录用户能够查看共享文件夹中的文件的方法就是将普通用户加入到 vboxsf 组中,之后登录yoghurt就拥有对共享文件夹中文件的操作权限。具体命令为
$> sudo usermod -a -G 用户名 vboxsf
总结
文件互联和网络互联对于一个虚拟机来说是很重要的一部分,这两个心得是我在使用 VirtualBox 的过程中对实现虚拟机与主机间的文件互联和网络互联的总结,希望能对各位读者有帮助,抛砖引玉,希望大家能够提出更好的实现方法。