本文总结一些 VirtualBox 和 Vagrant 的使用经验。主要有:
Windows 系统下的搭建。
TODO:Linux 系统搭建。
一、环境及说明
Vagrant 依赖于 VirtualBox,故两者要安装。
另外可先下载 Vagrant 官方做好的镜像,也可使用 Vagrant 命令下载。
本文所有命令在 git bash 上执行。
二、安装
2.1 VirtualBox下载
地址: https://www.virtualbox.org/wiki/Downloads。
下载版本:VirtualBox-6.0.14-133895-Win.exe。
安装之。
2.2 Vagrantt 下载
https://www.vagrantup.com/downloads.html
选择 Windows 64-bit 下载。
下载版本: vagrant_2.2.6_x86_64.msi。
安装之。
Vagrantt 官网镜像列表: https://app.vagrantup.com
2.3 下载ubuntu1604镜像
https://app.vagrantup.com/ubuntu/boxes/xenial64/
选择版本,最新版为 20191126.1.0。
在URL后添加 /providers/virtualbox.box。
https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/20191126.1.0/providers/virtualbox.box
2.4 其它镜像
centos7:
https://vagrantcloud.com/centos/boxes/7/versions/1905.1/providers/virtualbox.box
FreeBSD:
https://app.vagrantup.com/generic/boxes/freebsd11/providers/virtualbox.box
三、安装虚拟机
3.1 方式一:配置文件
进入某个目录,以此为工作目录(如:e:\project\vagrant),创建 vagrantfile 文件。内容如下:
1 | Vagrant.configure("2") do |config| |
启动:
1 | vagrant up |
注:由于未下载镜像,此命令会自动下载,接着启动虚拟机。如果网络不好,下载较耗时。
3.2 方式二:先下载,再导入
参考前文下载好虚拟机镜像压缩包。放到某目录(如:e:\project\vagrant),在此目录打开git bash。
导入、初始化、启动:
1 | vagrant box add ubuntu1604 xenial-server-cloudimg-amd64-vagrant.box |
四、导出虚拟机
场合:在某个虚拟机做了配置、安装软件,在此为基础,再做其它事,导出之。
进入 VirtualBox 安装目录,如 D:\Program Files\Oracle\VirtualBox 。执行 vboxmanage list vms
。为方便使用,最好将该路径添加到环境变量 PATH 中。
1 | $ VBoxManage.exe list vms |
第一列即为虚拟机名称。
导出:
1 | vagrant.exe package --base ubuntugolang_default_1575877892887_70070 --output ./ubuntugolang.box |
释义:package 表示打包,–base 指定VirtualBox的镜像文件,–output 指定导出后的镜像文件。
得到的 ubuntugolang.box 再导入为新的虚拟机。
此法适用于将其它虚拟机制作为Vgrant支持的格式。
五、提交镜像
如何将自己的镜像上传到官网?待研究。
六、常用命令
1 | vagrant box add <box名称> <镜像文件> // 添加一个box |
七、使用记录
7.1 确认这官方镜像路径
以官方 hashicorp/precise64 为例。初始化:
1 | vagrant init hashicorp/precise64 |
启动:
1 | vagrant up |
由于未下载镜像,自动下载,提示信息:
1 | Bringing machine 'default' up with 'virtualbox' provider... |
从倒数第二行可知道,hashicorp/precise64 镜像的真实路径为 https://vagrantcloud.com/hashicorp/boxes/precise64/versions/1.1.0/providers/virtualbox.box 。如果命令行下载较慢,可使用其它下载工具下载。再导入。
7.2 备忘
使用 vagrant up启动虚拟机后,打开 VirtualBox,即可看到。随后用 vagrant ssh 进入虚拟机。在虚拟机系统中输入 exit 可退出 git bash 命令行。用 vagrant halt 可关闭虚拟机。
默认/vargrant为当前工作目录。
默认没有root密码,需要先ssh到系统,再设置。
不能重复添加相同的虚拟机镜像,先删除再添加。
实际可直接用 VirtualBox 来执行,但 vagrant 多了一些资源及功能。
不要在 VirtualBox 删除虚拟机,否则要重新导入(类似将原始文件删除)。关机即可。
7.3 配置文件
配置文件为 Vagrantfile。建议关闭虚拟机,修改后,再启动。
添加主机名 config.vm.hostname = “workshop”。
更改网络配置为桥接:config.vm.network “public_network”。也可以指定IP:config.vm.network “public_network”, ip: “192.168.0.18”
当前的工作目录为虚拟机的 /vagrant 目录。即使使用 root 创建文件,在 windows 上也可直接读写。
修改内存:打开 config.vm.provider "virtualbox" do |vb|
,修改memory即可。
不显示virtualbox界面:将vb.gui改为false。此时不会出现virtualbox界面。
1 | config.vm.provider "virtualbox" do |vb| |
7.4 更改虚拟机镜像保存位置
默认情况下,Vagrant 导入的镜像、创建的虚拟机都在 C 盘,建议悠。
更改导入镜像位置:
添加环境变量 VAGRANT_HOME,值为 d:\vmfiles.vagrant.d。
VirtualBox 更改默认虚拟电脑位置:
管理 -> 全局设置 -> 常规,修改默认位置,如D:\vmfiles.vagrant.d\VirtualBox VMs。
注:原来的C盘目录,也会有文件,不可删除。
7.5 迁移目录
场合:原有分区太小,需要迁移到其它分区。为方便起见,建议只改盘符,保持路径一致。
1、VirtualBox:
将原目录拷贝到新目录,如G:\vmfiles.vagrant.d\VirtualBox VMs。
修改默认虚拟电脑位置,步骤见上。
在 VirtualBox 删除掉所有虚拟机。
控制->注册,选择新目录的虚拟机目录的 vbox 文件。
测试是否可正常运行,再删除原有虚拟机文件。
2、Vagrant操作:
将原目录拷贝到新目录,如 G:\vmfiles.vagrant.d
修改工程目录的 .vagrant\machines\default\virtualbox 目录下 box_meta 文件。将 directory 改为新目录路径。(注:实测发现有部分工程无此文件,不修改亦可正常)。
测试是否正常,再删除原有文件。
如果只想迁移Vagrant,修改 .vagrant\machines\default\virtualbox 目录下的 vagrant_cwd 文件,改路径修改为新的目录路径。(实测发现,如果不需要,在启动时会自动检测,并更新此文件)
八、其它记录
网络相关
使用vagrant时,默认是NAT,IP为10.0.2.15。可以上网,但无法与局域网通信。
如果额外再添加一个桥接网络,可以通信。如果在 Vagrantfile中指定为public网络,此二种情况下,有10网段,也有局域网,但默认网关还是10网段。
个人测试结论:在 k8s 部署时会连不上master。发广播时会发不出去。
多个网络设备选择
1 | ==> default: Available bridged network interfaces: |
原因:有无线,有有线,需要选择,输入1或2即可。