Multipass,本地轻量级Linux体验!
Multipass介绍
Multipass 是由Ubuntu官方提供,在Linux,MacOS和Windows上快速生成 Ubuntu虚拟机 的工具。它提供了一个简单但功能强大的CLI,可让我们在本地快速进入Ubuntu系统环境并使用Linux命令,亦可以在本地计算机创建自己的迷你型云服务器。总的来说就是在本地创建Ubuntu虚拟机,可以获得云端Ubuntu服务器般的体验。
Multipass在Windows上使用Hyper-V,在MacOS上使用Hyperkit,在Linux上使用LXD,以达到用最小的开销和最快的启动时间来进行虚拟机的创建,进而在不同平台提供统一的 Linux 开发环境体验。
Multipass 提供了一个命令行界面来启动和管理 Linux 实例,根据镜像创建实例,在本地已有实例的情况下,实例的启动仅需要数十秒的时间。
无论是Windows,还是MacOS、Linux,都可以在本地通过Multipass创建一个类服务器般体验的Linux系统,我们可以在Ubuntu实例系统中安装nginx、redis、kafka、k8s等软件,进而在本地体验、学习、开发、验证Linux服务器的相关内容。
Multipass官网:https://multipass.run/
使用指南
以下内容在两台Mac上实践,各例中的VM实例参数略有不同。
安装&卸载multipass
# 安装
$ brew install --cask multipass
# 卸载
$ brew uninstall multipass
# 卸载并删除数据
$ brew uninstall --zap multipass
查看multipass版本
(base) ➜ ~ multipass version
multipass 1.10.1+mac
multipassd 1.10.1+mac
查找可用镜像
(base) ➜ ~ multipass find
Image Aliases Version Description
snapcraft:core18 18.04 20201111 Snapcraft builder for Core 18
snapcraft:core20 20.04 20210921 Snapcraft builder for Core 20
snapcraft:core22 22.04 20220426 Snapcraft builder for Core 22
18.04 bionic 20221014 Ubuntu 18.04 LTS
... ... ...
创建实例
️ 可以指定镜像别名 和 实例别名
根据上一步multipass find
的结果,我们使用18.04版本的镜像,其别名为bionic,创建后的实例我们命名为d1804
(base) ➜ ~ multipass launch bionic --name d1804
Launched: d1804
不指定镜像会随机选择镜像创建。同样,不指定实例别名也会随机命名。
实例创建后默认启动,即running状态。
创建实例时可以附加的参数如下:
(base) ➜ ~ multipass launch bionic --name d1804 --cpus 4 --disk 20G --mem 8G
- -n, --name:名称
- -c, --cpus:cpu核心数, 默认: 1
- -m, --mem:内存大小, 默认: 1G
- -d, --disk::硬盘大小, 默认: 5G
查看实例列表
(base) ➜ ~ multipass list
Name State IPv4 Image
d1804 Running 192.168.64.3 Ubuntu 18.04 LTS
列表中会展示各实例的本地局域网IP地址,可以把该地址当作远程服务器的地址,进而实现本地VM实例模拟远程服务器的结果,同时可以在VM实例中安装MySQL、Redis等软件,当作本地开发的云端服务。
查看具体实例信息
(base) ➜ ~ multipass info d1804
Name: d1804
State: Running
IPv4: 192.168.64.3
Release: Ubuntu 18.04.6 LTS
Image hash: 5269cad5bc26 (Ubuntu 18.04 LTS)
Load: 0.00 0.06 0.06
Disk usage: 1.1G out of 4.7G
Memory usage: 73.5M out of 985.6M
Mounts: --
关闭&启动实例
关闭
(base) ➜ ~ multipass stop d1804
(base) ➜ ~ multipass list
Name State IPv4 Image
d1804 Stopped -- Ubuntu 18.04 LTS
启动
(base) ➜ ~ multipass start d1804
(base) ➜ ~ multipass list
Name State IPv4 Image
d1804 Running 192.168.64.3 Ubuntu 18.04 LTS
重启
(base) ➜ ~ multipass restart d1804
Restarting d1804 ...
补充:--all
参数
(base) ➜ ~ multipass start --all # 启动所有实例
(base) ➜ ~ multipass stop --all # 关闭所有实例
使用实例 - 进入shell交互
(base) ➜ ~ multipass shell d1804
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-194-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Nov 5 18:56:38 CST 2022
... ...
... ...
删除实例 - 可恢复
此时列表还显示被删除的实例
(base) ➜ ~ multipass delete foo
(base) ➜ ~ multipass list
Name State IPv4 Image
d1804 Running 192.168.64.3 Ubuntu 18.04 LTS
foo Deleted -- Not Available
恢复被删除的实例:
$ multipass recover foo
删除实例 - 永久删除
关键命令:multipass purge [instances...]
,采用纯净模式删除的实例不可恢复。
(base) ➜ ~ multipass delete foo
(base) ➜ ~ multipass purge
(base) ➜ ~ multipass list
Name State IPv4 Image
d1804 Running 192.168.64.3 Ubuntu 18.04 LTS
或者,一步到位
(base) ➜ ~ multipass delete --purge foo
外载命令模式
不需要进入实例的shell交互环境就可以执行实例内部命令,但需要目标实例处于running状态,如果没有处于running状态,会先启动再执行相关命令。
(base) ➜ ~ multipass exec d1804 -- pwd
/home/ubuntu
️ 实例别名后的 -- 后面要跟空格,之后再输入命令
挂载数据 using mount
mount命令是官方推荐的文件共享方式。
➜ ls
Photos Library.photoslibrary ishot u=60941161,499456713&fm=26&fmt=auto&gp=0.png
bizhi mail_img
img pokerking-full-logo.png
➜ multipass mount bizhi d1804
➜ multipass info d1804
Name: d1804
State: Running
IPv4: 192.168.64.2
Release: Ubuntu 18.04.6 LTS
Image hash: 5269cad5bc26 (Ubuntu 18.04 LTS)
Load: 0.06 0.09 0.03
Disk usage: 1.2G out of 9.5G
Memory usage: 119.4M out of 985.6M
Mounts: /Users/admin/Pictures/bizhi => /Users/admin/Pictures/bizhi
UID map: 501:default
GID map: 20:default
可以看出,根据本地bizhi
文件夹的路径,multipass在实例里面建立了同名路径的映射,此后双方任意方对该文件夹进行变动,都会同步至另一方。
取消共享:
$ multipass umount d1804
传输文件 using transfer
transfer
的作用就是从一端复制文件到另一端,可以是本地复制到一个实例里,也可以是从一个实例复制到另一个实例里,也可以是从实例复制到本地。
️ 同步的数据,后续变动双方互不影响。
从宿主机传送到Multipass实例中:
# mac本地键入
➜ ls
pokerking-full-logo.png
➜ multipass transfer pokerking-full-logo.png d1804:/tmp
➜ multipass shell d1804
# multipass实例中键入
ubuntu@d1804:~$ ls /tmp/
从Multipass实例传送到宿主机中:
# mac本地键入
➜ ~ ls Public
Drop Box
➜ ~ multipass shell d1804
# 实例键入
ubuntu@d1804:~$ pwd
/home/ubuntu
ubuntu@d1804:~$ touch test.txt
ubuntu@d1804:~$ ls
snap test.txt
# 再切换到mac本地shell
➜ ~ multipass transfer d1804:/home/ubuntu/test.txt /Users/admin/Public
➜ ~ ls Public
Drop Box test.txt
以上命令并不是Multipass支持的所有命令,但足够覆盖日常使用的80%,更多内容可以去文章顶部的Multipass官网自行浏览!
总结
写到这里,相信有部分人觉得Multipass的用法和Docker非常相似,也有部分Windows用户认为这和当前微软力推的WSL (Windows Subsystem for Linux) 的功能高度重叠。具体请看以下对比。
对比 | Multipass | Docker | WSL & WSL2 |
---|---|---|---|
技术领域 | 虚拟机 | 容器技术 | 虚拟机 |
背书厂商 | Canonical (Ubuntu官方) | Docker官方 | 微软 |
开发语言 | C++ | Go | C |
开源及 托管状态 |
开源,托管于GitHub 点击直达canonical/multipass |
开源,托管于GitHub 点击直达Docker |
开源,托管于GitHub 点击直达microsoft/WSL2 |
适配平台 | Linux & MacOS & Windows,跨平台能力好 | Linux适配较好,MacOS & Windows适配较弱 | Windows无缝集成 |
可选环境 | 仅Ubuntu官方镜像 | 各种Linux版本, 选择灵活性程度高 |
Linux kernel稳定版 + 部分发行版 |
适用场景 | 本地开发&验证&学习玩耍 | 可在工业级生产场景中 实际应用 |
本地开发&验证&学习玩耍 |
补充
- 可以在MacOS和Windows上安装Multipass,然后在Multipass的VM实例中安装Docker,使得非Linux系统的宿主机使用稳定的容器技术。(适用于个人学习玩耍,生产环境莫开玩笑!)
- Multipass的出现更像是Ubuntu为了和微软的WSL一争高下(个人猜测),可以将Multipass和WSL放在同等地位,Docker则是在Linux的基础上,具备前两者所没有的特性,重点提供不同于Multipass/WSL的服务。
- 针对软件开发人员,Windows的环境配置一向杂乱无章,有了Multipass,我们可以在Multipass生成的Linux实例环境中配置各种服务,如MySQL、Redis等,宿主机开发环境通过直连Multipass实例使用其提供的服务。
Multipass,本地轻量级Linux体验!的更多相关文章
- 轻量级linux CRUX安装笔记
感谢hrdd的分享,原文出处:http://wxdhrdd.blog.163.com/blog/static/120500564200952592240867/ 以下是对原文进行补充 crux的安装: ...
- 7款适用老旧设备并对初学者非常友好的轻量级Linux发行版
我们由从 7 到 1 的顺序向大家介绍. 7. Linux Lite 正如其名,Linux Lite 是 Linux 发行版的一个轻量级版本,用户并不需要强大的硬件就可以将它跑起来,而且其使用非常简单 ...
- 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)
在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...
- Linux体验之旅(一)——制作U启,安装rhel-server-6.3
U启制作: 双击UltraISO: 点击文件→打开: 选择rhel-server6.3 点击启动→选择写入硬盘映像 最后选择格式化优盘→写入→完毕 注意:启动盘制作完毕后一定记得将rhel-serve ...
- Alpine Linux 3.9.2 发布,轻量级 Linux 发行版
开发四年只会写业务代码,分布式高并发都不会还做程序员? Alpine Linux 3.9.2 已发布,Alpine Linux 是一款面向安全的轻量级 Linux 发行版,体积十分的小. Alpi ...
- Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-d ...
- coreOS+Docker新一代企业轻量级Linux
CoreOS官网主页使用一句话概括其理 念:“A new way to think about servers”,以及紧接着的“CoreOS is Linux for massive server d ...
- 采用xshell链路本地虚拟机Linux
昨天想安装在自己的机器看Linux.而使用xshell通路.但是这花了很长的时间,于xshell结束所有的提示"Could not connect to '192.168.54.100' ( ...
- 使用node连接MongoDB数据 综本地及linux服务器记
gitee地址 启动mongo D:\MongoDB> ./bin/mongod --dbpath ./data/db MongoDB 提供了简单的 HTTP 用户界面. 如果你想启用该功能,需 ...
- 本地显示Linux服务器的GUI程序
如果我们UI自动化脚本跑在 Linux 服务器环境上,这个时候我们是看不到界面的,如果不使用浏览器的无头模式,这个时候我们的程序就跑不起来了,如何在服务器环境不使用浏览器的无头模式下进行UI测试呢,我 ...
随机推荐
- 聊聊 asp.net core 认证和授权
使用asp.net core 开发应用系统过程中,基本上都会涉及到用户身份的认证,及授权访问控制,因此了解认证和授权流程也相当重要,下面通过分析asp.net core 框架中的认证和授权的源码来分析 ...
- C语言输入输出格式符
C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 说明: ( ...
- 【To B产品怎么做?】泛用户体验
目录 - 什么是泛用户体验? - 如何做好泛用户体验? - 泛用户体验有什么用? *预计阅读时间15分钟 不知道你有没有过这种体验,客服妹子的声音软糯,氛围微妙,用词标准,张口就是:给你带来了不好的体 ...
- CAP 6.2 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 6.2 版本正式版,在这个版本中我们主要做了一些功能优化,以及针对目前已经发现的几个 BUG 进行了修复了. 那么,接下来我们具体看一下吧. 总览 可能有些人 ...
- Linux宝塔如何开启指定的目录浏览功能
哈喽,各位运维晚上好, 今天突发奇想,想给我的个人博客加一个功能,就是如何去打开一个网站文件夹的目录浏览功能,这个还是挺有趣的. 为了以后我还能想起怎么用,我决定记录下来,以便能用,也能给大家一个参考 ...
- Django 聚合分组F与Q查询及choices
一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...
- 第六章:Django 综合篇 - 19:部署 Django
补充说明:关于项目部署,历来是开发和运维人员的痛点.造成部署困难的主要原因之一是大家的Linux环境不同,这包括发行版.解释器.插件.运行库.配置.版本级别等等太多太多的细节.因此,一个成功的部署案例 ...
- ConfigMap使用说明
ConfigMap概述 ConfigMap供容器使用的典型用法如下. (1)生成为容器内的环境变量. (2)设置容器启动命令的启动参数(需设置为环境变量). (3)以Volume的形式挂载为容器内部的 ...
- Mysql三种日志(binlog,redolog,undolog)的作用和区别
Mysql有三种很重要的日志也是面试经常涉及到的考点,分别是 binlog .redo log和undo log, 这里面binlog 是server层实现的日志,而redo log 和undo lo ...
- Libgdx游戏学习(1)——环境配置及demo运行
原文: Libgdx游戏学习(1)--环境配置及demo运行 - Stars-One的杂货小窝 Libgdx游戏是基于Java的一款游戏引擎,可以发布Android,桌面端,Html,IOS等游戏,出 ...