再见了VMware,一款更轻量级的虚拟机!

2024-05-15 11:38

本文主要是介绍再见了VMware,一款更轻量级的虚拟机!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

28a7cf2ef35dd6630cb2ab11d6a0d935.png

这是「进击的Coder」的第 556 篇技术分享

作者:陌溪

来源:陌溪教你学编程

阅读本文大概需要 12 分钟。

最近,打算在 Mac 电脑上安装一个虚拟机,用来学习 K8S

首先想到的是 VmwareParallels Desktop,然后打开浏览器找了找,发现都只提供付费版本,只有 Parallels Desktop 提供了 14 天的免费试用。

3742394d5ffcd17dae3089539daa42c5.png
无法白嫖

然后,开始尝试使用免费 VirtualBox,但是在安装 CentOS 的时候,貌似因为 MacOS 最新版本的原因,总是报错,花费了好几天的时间,试过各种方案,最终解决无果,就放弃了。。

就在我要放弃的时候,突然在 Ubuntu 官网进行冲浪的时候,发现了一款叫 Multipass 的东西。

它可以快速在电脑上快速搭建一个轻量级的虚拟机,并且相比于 Vmware 更加轻量,只需一行命令快速创建 Ubuntu 虚拟机。

Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目。运行环境支持 LinuxWindowsmacOS。在不同的操作系统上,使用的是不同的虚拟化技术。在 Linux 上使用的是 KVMWindow 上使用 Hyper-VmacOS 中使用 HyperKit 以最小开销运行VM,支持在笔记本模拟小型云。

同时,Multipass 提供了一个命令行界面来启动和管理 Linux 实例。下载一个全新的镜像需要几秒钟的时间,并且在几分钟内就可以启动并运行 VM。(直呼好家伙,大大降低的我们安装虚拟机的成本了)

Multipass官网:https://multipass.run/

ac80a51d4312a46565e9564760900d77.png
Multipass官网

开始使用

在使用 Multipass 之前 ,首先需要安装 Multipass 工具,可以打开官网进行下载

https://multipass.run/

选择对应的操作系统,因为我的是 Mac 电脑,所以选择 MacOS,点击 Download 开始下载

d4ff9a0056236832bf81082ab818bbd1.png
选择对应版本安装

如果电脑装了 brew 可以直接命令行下载安装:

brew cask install multipass

下载安装成功后, 执行以下命令可以查看当前软件版本:

multipass --version

安装成功后,点击运行,即可打开 Multipass 客户端,这里能够快速的通过 Open Shell 创建和启动一个虚拟机

39aa01cbfe309382a797b0534948c878.png
Multipass客户端

下面,我们来介绍如何通过命令的方式,创建一台虚拟机

创建Ubuntu虚拟机

首先,通过以下指令查看可供下载的 Ubuntu 镜像

multipass find

运行成功后,可以看到下面的这些镜像列表,包含各种版本的

Image                       Aliases           Version          Description
core                        core16            20200818         Ubuntu Core 16
core18                                        20200812         Ubuntu Core 18
18.04                       bionic            20211109         Ubuntu 18.04 LTS
20.04                       focal,lts         20211118         Ubuntu 20.04 LTS
21.04                       hirsute           20211119         Ubuntu 21.04
21.10                       impish            20211103         Ubuntu 21.10
appliance:adguard-home                        20200812         Ubuntu AdGuard Home Appliance
appliance:mosquitto                           20200812         Ubuntu Mosquitto Appliance
appliance:nextcloud                           20200812         Ubuntu Nextcloud Appliance
appliance:openhab                             20200812         Ubuntu openHAB Home Appliance
appliance:plexmediaserver                     20200812         Ubuntu Plex Media Server Appliance
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
minikube                                      latest           minikube is local Kubernetes

下载最新版的 Ubuntu 镜像并运行,初次创建时需要下载 Ubuntu 镜像,网络畅通的情况下,稍等片刻即可。

multipass launch -n vm01 -c 1 -m 1G -d 10G

自定义配置创建可以参考如下方式:

-n, --name: 名称
-c, --cpus: cpu核心数, 默认: 1
-m, --mem: 内存大小, 默认: 1G
-d, --disk: 硬盘大小, 默认: 5G

操作虚拟机

查看虚拟机列表

虚拟机创建完成后,可以使用 multipass list 命令进行查看虚拟机列表

% multipass list
Name                    State             IPv4             Image
vm01                    Running           192.168.64.2     Ubuntu 20.04 LTS

可以看到目前正在运行一台 Ubuntu 20.04 版本的虚拟机,并且对应的 IP 地址为 192.168.64.2

外部操作虚拟机

通过 multipass exec 命令在实例内执行给定的命令。第一个参数是运行命令的实例,也就是 vm01

我们通过 exec 命令,就可以在外部操作刚刚创建的虚拟机,例如查看内部所处的目录,执行 pwd 命令

# multipass exec vm01 pwd
/home/ubuntu

查看虚拟机信息

通过 multipass info 命令,即可查看当前运行的虚拟机信息

# multipass info vm01
Name:           vm01
State:          Running
IPv4:           192.168.64.2
Release:        Ubuntu 20.04.3 LTS
Image hash:     91740d72ffff (Ubuntu 20.04 LTS)
Load:           0.00 0.00 0.00
Disk usage:     1.3G out of 9.5G
Memory usage:   170.9M out of 1.9G
Mounts:         --

进入虚拟机

通过 multipass shell 命令,即可进入到虚拟机内部

multipass shell vm01

运行后的结果如下所示,可以看到目前虚拟机的一些系统配置信息,以及内存和磁盘的使用情况

abf96a183f8b6c18b3fa7897a8e2430d.png
进入虚拟机内部

同时会运行一个新的 Ubuntu 系统,此时便进入到了Ubuntu 环境中, 在里面可以执行相关的 linux 指令

当然如果不想进入系统内部,也可以通过上述提到的 multipass exce 命令,来操作 Ubuntu 系统

首先执行下面命令,给系统设置一个 root 密码,设置好密码后,使用 su root 切换到 root 用户

# 设置密码
sudo passwd
# 切换 root
su root

ubuntu 是使用 apt-get 来进行包管理的,首先更新一下 apt-get,然后安装 nginx

# 更新apt
apt-get update
# 安装 nginx
apt-get install nginx

安装好 nginx 后,可以到 /etc/nginx 目录即可看到刚刚的 nginx 配置信息

root@vm01:/lost+found# cd /etc/nginx/
root@vm01:/etc/nginx# ls
conf.d        fastcgi_params  koi-win     modules-available  nginx.conf    scgi_params      sites-enabled  uwsgi_params
fastcgi.conf  koi-utf         mime.types  modules-enabled    proxy_params  sites-available  snippets       win-utf

下面我们可以测试一下,nginx 是否安装成功,在 mac 上打开浏览器,输入虚拟机的 ip 地址 192.168.64.2

12aa37250a8c2451ad831cfa1d645a69.png
nginx安装成功

可以看出,目前 nginx 已经成功运行了,后续的话,可能会考虑在上面部署更多的应用,感兴趣的小伙伴欢迎关注~

挂载数据卷

multipass 还提供和 Docker 一样的挂载数据卷的功能,能够与外部宿主机的文件保持同步。

# 挂载格式
multipass mount 宿主机目录  实例名:虚拟机目录

下面,我在用户的目录下,创建一个 hello 目录

# 创建hello目录
mkdir hello
# 挂载
multipass mount /Users/moxi/hello  vm01:/hello

挂载完成后,我们回到实例 vm01 中,可以看出多了一个 hello 文件夹,说明已经成功挂载~

84795cbd2855f4480eabddc88e5d9f22.png
挂载成功

因此,以后在 vm01hello文件夹 中创建的文件,都会在的宿主机的 hello 文件夹同步显示

卸载数据卷

如果以后不需要用到挂载了,可以使用 unmount 命令卸载

#卸载数据卷
multipass umount 容器名

传输文件

除了使用上述的 mount 挂载卷的方式实现文件的交互,同时还可以通过 transfer 命令,将宿主机的文件,发送到虚拟机内部

multipass transfer 主机文件 容器名:容器目录

例如,将 hello.txt 发送到

multipass transfer hello.txt vm01:/home/ubuntu/

删除和释放实例

使用下面的命令,可以开启、停止、删除和释放实例

# 启动实例
multipass start vm01
# 停止实例
multipass stop vm01
# 删除实例(删除后,还会存在)
multipass delete vm01
# 释放实例(彻底删除)
multipass purge vm01

容器配置自动化

为了保持开发环境和线上环境一致性 同时节省部署时间 multipass 给我们提供了 --cloud-init 选项进行容器启动初始化配置:

multipass launch --name ubuntu --cloud-init config.yaml

上面 config.yaml 则是容器的初始化配置文件,例如,我们想在初始化容器的时候,自动下载安装 Node.js,内容如下:

#cloud-config
runcmd:- curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -- sudo apt-get install -y nodejs

runcmd 可以指定容器 首次启动 时运行的命令

凡是用户自定义的cloud-init的配置文件,必须以#cloud-config开头,这是cloud-init识别它的方式。

yaml 配置文件可以参考下面的文章

https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups

更多关于 multipass 的高阶的技巧,欢迎访问 multipass 官方文档

https://multipass.run/docs/

好了,本期关于 Multipass 的基础学习就到这里了,感兴趣的小伙伴环境下载自己动手学习呢~

总结

使用了一阵子后,Multipass 在使用起来很简洁直观,在整体操作上和 docker 类似,如果想在自己电脑上快速搭建一个 Linux 系统用于学习的话,选择使用 Multipass 还是非常方便的。

唯一不足的地方就是,Multipass 是由 Ubuntu 背后的 Canonical 公司开发的,因此 Multipass 所使用的镜像也都是 Ubuntu 镜像(这也可以理解,毕竟支持自家的产品),不过对于习惯了使用 CentOS 的用户来说,还是用些许不太习惯。

不过瑕不掩瑜,Multipass 在我看来还是一款非常棒的软件~

另外,它的代码也在 GitHub 开源了,需要进一步研究的小伙伴也可以看下:

GitHub:https://github.com/canonical/multipass

5d25d4a431569170a8ab816578e6ee48.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

037bde74066859c085c855f4425ebf37.png

扫码购买

19aacef46ada1aa8dd03fcd37e725f5d.png

好文和朋友一起看~

这篇关于再见了VMware,一款更轻量级的虚拟机!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991738

相关文章

HotSpot虚拟机的经典垃圾收集器

读《深入理解Java虚拟机》第三版笔记。 关系 Serial、ParNew、Parallel Scavenge、Parallel Old、Serial Old(MSC)、Concurrent Mark Sweep (CMS)、Garbage First(G1)收集器。 如图: 1、Serial 和 Serial Old 收集器 2、ParNew 收集器 3、Parallel Sc

理解java虚拟机内存收集

学习《深入理解Java虚拟机》时个人的理解笔记 1、为什么要去了解垃圾收集和内存回收技术? 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。 2、“哲学三问”内存收集 what?when?how? 那些内存需要回收?什么时候回收?如何回收? 这是一个整体的问题,确定了什么状态的内存可以

# VMware 共享文件

VMware tools快速安装 VMware 提供了 open-vm-tools,这是 VMware 官方推荐的开源工具包,通常不需要手动安装 VMware Tools,因为大多数 Linux 发行版(包括 Ubuntu、CentOS 等)都包含了 open-vm-tools,并且已经优化以提供与 VMware 环境的兼容性和功能支持。 建议按照以下步骤安装 open-vm-tools 而不

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

虚拟机ubuntu配置opencv和opencv_contrib

前期准备  1.下载opencv和opencv_contrib源码 opencv-4.6.0:https://opencv.org/releases/ opencv_contrib-4.6.0:https://github.com/opencv/opencv_contrib 在ubuntu直接下载或者在window上下好传到虚拟机里都可以 自己找个地方把他们解压,个人习惯在home下新建一

OpenStack创建虚拟机过程

OpenStack创建虚拟机过程 一、在分析OpenStack创建虚拟机的过程之前,先来梳理一下需要用用到哪些组件。 二、每一步都需要去keystone去进行验证,下图有详细的流程。 登录界面或命令行通过RESTful API向keystone获取认证信息。keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。界面或命令行通过RESTful API

VMware Fusion Pro 13 Mac版虚拟机 安装Win11系统教程

Mac分享吧 文章目录 Win11安装完成,软件打开效果一、VMware安装Windows11虚拟机1️⃣:准备镜像2️⃣:创建虚拟机3️⃣:虚拟机设置4️⃣:安装虚拟机5️⃣:解决连不上网问题 安装完成!!! Win11安装完成,软件打开效果 一、VMware安装Windows11虚拟机 首先确保自己的mac开启了网络共享。不然虚拟机连不上👀的 1️⃣:准备镜像

SSH连接虚拟机中的Ubuntu 12.0.4

摘要:主要是解决不能使用ssh远程Ubuntu的问题、使用的远程工具是putty、也可以使用xshell、ubunut12.0.4是装在虚拟机中的、不过这个应该没有什么影响。 一:问题的出现 前两天使用VMware装了一个ubuntu12.0.4之后、因为常常使用命令行、又喜欢在虚拟机与实体机中切来切去、感觉很不方便、就想在xp中远程ubuntu、遇到了点小意外、经过一会调试解决成功、把

用了虚拟机后,本机摄像头打不开了(联想电脑thinkpad)

虚拟机有摄像头,我断开了连接,现在本机的摄像头打开就是一个锁 我先把虚拟机的摄像头关了 然后把本机的vm usb关闭了 Win+R),输入services.msc,找到VMware USB Arbitration Service,确保其状态为“关闭 然后打开桌面助手 开启 参考: 联想知识库

Java虚拟机垃圾回收的几个关键问题

20151008 GC的几个关键问题,触发条件,触发的机制 主线是数据的移动,从什么位置到什么位置,移动的条件是什么? 1 垃圾收集在什么时候触发? GC都是在带满了的时候触发的,每次触发都是把不会用的不可达的对象空间回收了,留下还在用的对象。 1) MinorGC的触发是伊甸园空间满的时候 2) FullGC的触发是在老年代满的时候 2 垃圾回收的时候做哪些工作? 1) 一个新的对象new出