gpt4 book ai didi

Multipass,多平台本地轻量级Linux体验!

转载 作者:我是一只小鸟 更新时间:2022-11-26 22:38:01 31 4
gpt4 key购买 nike

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/

                        
                      

image (1)

从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稳定版 + 部分发行版
适用场景 本地开发&验证&学习玩耍 可在工业级生产场景中
实际应用
本地开发&验证&学习玩耍

补充💡

  1. 可以在MacOS和Windows上安装Multipass,然后在Multipass的VM实例中安装Docker,使得非Linux系统的宿主机使用稳定的容器技术。(适用于个人学习玩耍,生产环境莫开玩笑!)
  2. Multipass的出现更像是Ubuntu为了和微软的WSL一争高下(个人猜测),可以将Multipass和WSL放在同等地位,Docker则是在Linux的基础上,具备前两者所没有的特性,重点提供不同于Multipass/WSL的服务。
  3. 针对软件开发人员,Windows的环境配置一向杂乱无章,有了Multipass,我们可以在Multipass生成的Linux实例环境中配置各种服务,如MySQL、Redis等,宿主机开发环境通过直连Multipass实例使用其提供的服务。

最后此篇关于Multipass,多平台本地轻量级Linux体验!的文章就讲到这里了,如果你想了解更多关于Multipass,多平台本地轻量级Linux体验!的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com