
圣诞节快乐
最近打算在自己的Mac电脑上安装一个虚拟机来学习K8S。
我首先想到的是 Vmware 和 Parallels Desktop。然后我打开浏览器搜索,发现他们只提供付费版本,而且只有Parallels Desktop提供14天免费试用。
不能白嫖
然后,我开始尝试使用免费的VirtualBox,但是当我安装CentOS时,似乎因为最新版本的MacOS,我总是报错。折腾了好几天,尝试了各种方案,终于解决了无果,只好作罢。.
就在莫西快要放弃的时候,突然在Ubuntu官网冲浪的时候发现了一个叫做Multipass的东西。
它可以在电脑上快速搭建一个轻量级的虚拟机,并且比Vmware更轻巧,只需一行命令即可快速创建一个Ubuntu虚拟机。
Multipass 是一个轻量级的虚拟机管理器,是 Ubuntu 运营公司 Canonical 推出的一个开源项目。运行环境支持Linux、Windows、macOS。在不同的操作系统上,使用不同的虚拟化技术。Linux上使用KVM,Window上使用Hyper-V,macOS上使用HyperKit以最小的开销运行VM,并且支持在笔记本电脑上模拟小云。
同时,Multipass 提供了命令行界面来启动和管理 Linux 实例。下载一个全新的镜像需要几秒钟的时间,而虚拟机可以在几分钟内启动并运行。(呼唤好心人,安装虚拟机的成本大大降低了)
多通官网:
开始使用Multipass官网
在使用Multipass之前,首先需要安装Multipass工具,可以从官网下载
选择对应的操作系统,因为我的是Mac电脑,所以选择MacOS,点击Download开始下载
选择对应的版本进行安装
如果电脑上安装了brew,可以直接从命令行下载安装:
下载安装成功后,执行以下命令查看当前软件版本:
安装成功后,点击运行打开Multipass客户端,在这里可以通过Open Shell快速创建和启动虚拟机
多通道客户端
接下来,我们将介绍如何通过命令的方式创建虚拟机
创建 Ubuntu 虚拟机
首先,使用以下说明查看可供下载的 Ubuntu 镜像
运行成功后可以看到如下镜像列表info命令没有用,包括各种版本的镜像
下载最新版本的 Ubuntu 映像并运行它。首次创建时需要下载 Ubuntu 镜像。如果网络打开,请稍等片刻。
可以参考以下方式创建自定义配置:
操作虚拟机
查看虚拟机列表
创建虚拟机后,可以使用multipass list命令查看虚拟机列表
可以看到当前运行的是Ubuntu 20.04版本的虚拟机,对应的IP地址为192.168.64.2
外部操作虚拟机
通过 multipass exec 命令在实例中执行给定的命令。第一个参数是运行命令的实例,即vm01
通过exec命令info命令没有用,我们可以在外部操作刚刚创建的虚拟机,比如查看内部目录,执行pwd命令
查看虚拟机信息
通过multipass info命令可以查看当前运行的虚拟机信息
进入虚拟机
通过multipass shell命令可以进入虚拟机
运行后的结果如下,可以看到当前虚拟机的一些系统配置信息,以及内存和磁盘的使用情况
进入虚拟机
同时会运行一个新的Ubuntu系统,这时候就进入了Ubuntu环境,可以执行相关的linux命令
当然,如果不想进入系统,也可以使用上面提到的multipass exce命令来操作Ubuntu系统。
首先执行以下命令为系统设置一个root密码,设置密码后使用su root切换到root用户
Ubuntu使用apt-get进行包管理,先更新apt-get,再安装nginx
安装nginx后,可以到/etc/nginx目录下查看刚才的nginx配置信息
接下来我们可以测试nginx是否安装成功,在mac上打开浏览器,输入虚拟机的ip地址192.168.64.2
nginx安装成功
可以看到,目前nginx已经运行成功。将来,您可以考虑在其上部署更多应用程序。欢迎感兴趣的朋友关注~
挂载数据卷
Multipass 还提供了与 Docker 相同的挂载数据卷的功能,并且可以与外部主机文件同步。
接下来,我在用户目录下创建一个hello目录
挂载完成后,我们返回实例vm01,可以看到多出一个hello文件夹,说明挂载成功~
挂载成功
因此,在vm01的hello文件夹中创建的文件会同步显示在宿主机的hello文件夹中。
卸载数据卷
如果以后不需要挂载,可以使用unmount命令卸载
传输文件
除了使用前面提到的挂载方式实现文件交互外,还可以使用transfer命令将宿主机的文件发送到虚拟机。
例如,发送 hello.txt 到
删除和释放实例
使用以下命令启动、停止、删除和释放实例
容器配置自动化
为了在节省部署时间的同时保持开发环境和在线环境的一致性,multipass为我们提供了–cloud-init选项,用于容器启动的初始配置:
上面的 config.yaml 是容器的初始配置文件。比如我们想在容器初始化的时候自动下载安装Node.js。内容如下:
您可以指定在容器首次启动时运行的命令
任何用户定义的 cloud-init 配置文件都必须以 #cloud-config 开头,这是 cloud-init 识别它的方式。
yaml配置文件可以参考以下文章
请登录后发表评论
注册
社交帐号登录