虚拟机软件太多了,出名的莫过于VMwareVirutlaBox以及Parallels Desktop

我们使用虚拟机软件一般有两种用途:

  1. 安装不同于宿主机系统的拥有用户界面的操作系统,比如Windows安装桌面版Ubuntu,Mac安装Windows等,用于日常工作和生活的使用;

这一需求我目前使用Parallels Desktop来解决,在我本机上安装了WindowsUbuntu的桌面版。Parallels Desktop除了贵,没有其他问题!

  1. 另一种是便于开发者快速创建和部署虚拟化开发环境(集群环境),本文推荐的虚拟软件就是这个作用。

之前我在Windows上都是使用VirtualBox+Vagrant的方式快速创建和销毁虚拟机。现在我的工作主机换成了M1芯片的Mac,而VirtualBox并没有给予适配。

最近发现了一款叫做Multipass的虚拟机软件,重点是,我的M1电脑可以使用!接下来给大家分享一下使用心得。

1. 下载安装Multipass

Mac下推荐使用brew安装Multipass,免去了点击下载,解压以及安装的步骤

  1. brew install --cask multipass

安装之后,查看是否安装成功

  1. ~ multipass version
  2. multipass 1.9.2+mac
  3. multipassd 1.9.2+mac

2. 查看Multipass支持的镜像

  1. ~ multipass find
  2. Image Aliases Version Description
  3. 18.04 bionic 20220615 Ubuntu 18.04 LTS
  4. 20.04 focal,lts 20220615 Ubuntu 20.04 LTS
  5. 21.10 impish 20220609 Ubuntu 21.10
  6. 22.04 jammy 20220609 Ubuntu 22.04 LTS
  7. anbox-cloud-appliance latest Anbox Cloud Appliance
  8. charm-dev latest A development and testing environment for charmers
  9. docker latest A Docker environment with Portainer and related tools
  10. minikube latest minikube is local Kubernetes

注意Multipass只提供了Ubuntu的发行版镜像,这对于开发人员开说并不算什么缺点,至少对我是这样的

3. 创建虚拟机

接下来我们选择需要的镜像版本来安装Ubuntu实例,这里以jammy(镜像列表的Aliases一列)为例

  1. ~ multipass launch jammy
  2. Launched: boss-wallaroo

其中,boss-wallarooMultipassjammy镜像实例随机起的名字,你也可以使用--name来指定实例名称。

  1. ~ multipass launch jammy --name chanmufeng-ubuntu
  2. Launched: chanmufeng-ubuntu

4. 操作虚拟机

4.1. 查看虚拟机列表

使用multipass info --all查看安装的所有虚拟机

  1. ~ multipass info --all
  2. Name: chanmufeng-ubuntu
  3. State: Running
  4. IPv4: 192.168.64.3
  5. Release: Ubuntu 22.04 LTS
  6. Image hash: 746fd17e2944 (Ubuntu 22.04 LTS)
  7. Load: 0.02 0.02 0.00
  8. Disk usage: 1.3G out of 4.7G
  9. Memory usage: 162.4M out of 961.9M
  10. Mounts: --
  11. Name: lucky-dog
  12. State: Stopped
  13. IPv4: --
  14. Release: --
  15. Image hash: 746fd17e2944 (Ubuntu 22.04 LTS)
  16. Load: --
  17. Disk usage: --
  18. Memory usage: --
  19. Mounts: --

执行结果表明,我电脑上有了2个实例,分别是chanmufeng-ubuntu(运行中)、lucky-dog(停止状态)。

4.2. 进入虚拟机,执行命令

执行multipass shell 实例名 进入实例,如果实例未启动,则会自动启动

  1. ~ multipass shell lucky-dog
  2. Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-37-generic aarch64)
  3. * Documentation: https://help.ubuntu.com
  4. * Management: https://landscape.canonical.com
  5. * Support: https://ubuntu.com/advantage
  6. System information as of Sun Jun 19 21:06:43 CST 2022
  7. System load: 0.3203125
  8. Usage of /: 29.8% of 4.77GB
  9. Memory usage: 20%
  10. Swap usage: 0%
  11. Processes: 100
  12. Users logged in: 0
  13. IPv4 address for enp0s1: 192.168.64.2
  14. IPv6 address for enp0s1: fd96:8c7d:a0ba:459d:5054:ff:fea5:1ea3
  15. 0 updates can be applied immediately.
  16. Last login: Tue Jun 14 13:41:27 2022 from 192.168.64.1
  17. ubuntu@lucky-dog:~$ ~

然后就可以在lucky-dog中自由地玩耍了。

4.3. 停止/重启虚拟机

  1. # 暂停
  2. ~ multipass stop lucky-dog
  3. # 启动
  4. ~ multipass start lucky-dog

4.4. 移除实例到“回收站”

使用如下命令删除实例

  1. ~ multipass delete chanmufeng-ubuntu

delete命令只是将chanmufeng-ubuntu实例标记为DELETED状态而已,相当于放到了回收站,但是本身依然存在。

使用list命令看一下

  1. ~ multipass list
  2. Name State IPv4 Image
  3. chanmufeng-ubuntu Deleted -- Not Available
  4. lucky-dog Running 192.168.64.2 Ubuntu 22.04 LTS

如果后悔了,可以使用recover命令进行撤销

  1. ~ multipass recover chanmufeng-ubuntu

再次使用list命令看一下

  1. ~ multipass list
  2. Name State IPv4 Image
  3. chanmufeng-ubuntu Stopped -- Not Available
  4. lucky-dog Running 192.168.64.2 Ubuntu 22.04 LTS

4.5. 彻底删除实例

这一步相当于从“回收站”彻底删除,当然了,前提是实例必须已经被放在了“回收站”。

  1. ~ multipass delete chanmufeng-ubuntu
  2. ~ multipass purge
  3. ~ multipass list
  4. Name State IPv4 Image
  5. lucky-dog Running 192.168.64.2 Ubuntu 22.04 LTS

5. 其他进阶功能

除了以上基本功能,Multipass还提供其他进阶功能,本文只是提一嘴,更多细节,大家访问官网查看一下文档即可。

5.1. 自定义硬件配置

  • 可以自定义CPU核心数、硬盘大小以及内存大小等参数

  • 自定义网卡配置和DNS配置

5.2. 快速配置环境

虚拟机功能给我们带来的好处就是对于实例,我们想建就建,想删就删。

可是删了之后重新建立,难免很多软件和工具需要重新进行配置,Mutipass提供了--cloud-init对容器进行初始化配置。

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

config.yaml 是初始化配置文件,内容如下:

  1. runcmd:
  2. - curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
  3. - sudo apt-get install -y nodejs

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

5.3. 搭配VirtualBox

当然,这个功能不适合M1,但是在其他平台上搭配VirtualBox可以实现和Vagrant同样的效果。

通过VirtualBoxMultipass虚拟机进行可视化操作。

还有其他的一些功能需要读者朋友们自己发掘一下了,更多细节参见官网

推荐一款M1芯片电脑快速搭建集群的虚拟机软件的更多相关文章

  1. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!

    OpenYurt作为阿里巴巴首个开源的边缘云原生项目,涉及到边缘计算和云原生两个领域.然而,许多边缘计算的开发者并不熟悉云原生相关的知识.为了降低 OpenYurt 的使用门槛,帮助更多地开发者快速上 ...

  2. CentOS7下 简单安装和配置Elasticsearch Kibana Filebeat 快速搭建集群日志收集平台

    目录 1.添加elasticsearch官网的yum源 2.Elasticsearch 安装elasticsearch 配置elasticsearch 启动elasticsearch并设为开机启动 3 ...

  3. 使用windos电脑模拟搭建集群(四)web环境 linux+nginx+jdk+tomcat

    1.使用ansible的playbook自动安装两台web主机的nginx 1.配置模块 主机清单 2.创建 playbook目录并编写安装nginx的playbook mkdir -p playbo ...

  4. 使用windos电脑模拟搭建集群(三)实现全网监控

    这里我们采用小米监控 open-falcon  这是server端就是 192.168.5.200 这台主机, agent就是负责将数据提交到 server端       agent整个集群所有主机都 ...

  5. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  6. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

  7. redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...

  8. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)

    [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式.接下来,小编就和大家一起来做个小Demo来体会一下N ...

  9. Nginx学习笔记(反向代理&搭建集群)

    一.前言 1.1 大型互联网架构演变历程 1.1.1 淘宝技术 淘宝的核心技术(国内乃至国际的 Top,这还是2011年的数据) 拥有全国最大的分布式 Hadoop 集群(云梯,2000左右节点,24 ...

随机推荐

  1. [已解决] error: cannot convert `int*' to `int**' for argument `2' to `void print_f(int, int**)'

    #include "stdio.h" #include "stdlib.h" #include "time.h" void print_f( ...

  2. Java学习day19

    今天学习了窗口监听.和鼠标监听 通过构建自己的输入框监听方法能够实现简单的加法计算器 明天学习Swing,做一个简单的基于鼠标点击操作的画板

  3. 界面优化--如何提升用户体验(Velocity.js和GSAP)

    Velocity.js和GSAP 我们需要提升代码质量来留住用户.作为用户界面的建设者,我们的工作是迅速引导和引导用户的注意力,指导他们如何有效地使用我们的应用程序. 1. 如何提升代码质量 定向聚焦 ...

  4. 面试官:RabbitMQ过期时间设置、死信队列、延时队列怎么设计?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 RabbitMQ我们经常的使用, ...

  5. petite-vue源码剖析-逐行解读@vue-reactivity之effect

    当我们通过effect将副函数向响应上下文注册后,副作用函数内访问响应式对象时即会自动收集依赖,并在相应的响应式属性发生变化后,自动触发副作用函数的执行. // ./effect.ts export ...

  6. 听说Integer有bug?1000不等于1000?

    bug? 前几天有位朋友找我,说:"老哥,老哥,我好像发现了Integer一个bug,你帮我看看什么情况?",说完给了我两个很简单的demo,上代码. 100 == 100 100 ...

  7. Android Studio 的蓝牙串口通信(附Demo源码下载)

    根据相关代码制作了一个开源依赖包,将以下所有的代码进行打包,直接调用即可完成所有的操作.详细说明地址如下,如果觉得有用可以GIthub点个Star支持一下: 项目官网 Kotlin版本说明文档 Jav ...

  8. 【SpringBoot实战】视图技术-Thymeleaf

    前言 在一个Web应用中,通常会采用MVC设计模式实现对应的模型.视图和控制器,其中,视图是用户看到并与之交互的界面.对最初的Web应用来说,视图是由HTML元素组成的静态界面:而后期的Web应用更倾 ...

  9. 【mq】从零开始实现 mq-04-启动检测与实现优化

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...

  10. C++基础-3-函数

    3. 函数 3.1 函数默认参数 1 #include<iostream> 2 using namespace std; 3 4 //函数的默认参数 5 //自己传参,就用自己的,如果没有 ...