logo
menu
善用开源,MacOS下绝佳的Linux虚拟化工具 - Lima2024-06-02
开源

做为程序员群体,我们经常需要使用Linux。而且可能会使用各种不同版本的Linux。可能是Ubuntu,也可能是CentOS或其它。

虽然有很多程序员会使用Linux做桌面操作系统,但大多数仍然会使用Windows或MacOS。 在Windows及MacOS上,我们就需要方便快速的工具来虚拟Linux,以方便我们测试等使用。

很多程序员可能会考虑或使用开源的VirtualBox或商业的VMware,但这些GUI式的虚拟工具,虚拟一个Linux的过程非常麻烦。我曾经推荐过Multipass这款纯命令行式的虚拟工具,但它有只支持Ubuntu。(因为是Ubuntu开发的)

我已经早就放弃使用Multipass,而使用更方便的Lima。

Lima不仅是一个开源的免费的工具,相比较Multipass而言,它还有很多其它优势,比如不只支持Ubuntu, 而且可以基于它轻易的在MacOS取代Docker Desktop For Mac这个笨重,难用的软件。

Lima的官网是: https://lima-vm.io/docs/

Lima

Lima是一款MacOS上的Linux虚拟软件。和我以前介绍的Ubuntu的Multipass这个工具非常类似。

通过Lima可以仅通过一个命令就方便的创建并使用一个虚拟的无GUI的Linux。在Lima之前,我一直是通过ubuntu的multipass来做这个。但multipass只支持ubuntu,而Lima则基本支持所有主流服务Linux系统,包括AlmaLinux, Alpine, Arch Linux, Debian, Fedora, openSUSE, Oracle Linux, Rocky, Ubuntu等。

看到没,基本上你会用的Linux,你都能用Lima虚拟出来。而虚拟这些Linux在Lima中简单到只需要一行命令。

# 创建一个debian虚拟机
limactl create --name=debian template://debian

是不是非常简单方便?

安装与使用

  1. 安装

在MacOS上安装软件的最方便的方式就是使用Homebrew,安装Lima也不例外。相较于其它安装起来更麻烦的方式,建议使用homebrew来安装

brew install lima

安装完成之后,检验下版本以验证是否安 .装成功

limactl --version
# 会输出limactl version 0.22.0
  1. 虚拟一个Linux

Lima是一个纯命令行工具。你需要通过命令来执行所有lima的功能。当然,对于经常使用Linux的程序员来说,这个应该是习以为常的了。

我们先来虚拟一个Linux。基于命令行来虚拟一个Linux其实有很多参数,比如你要什么Linux系统,内存多少,CPU分配多少,硬盘多少等。如果每次创建Linux虚拟机都要一堆参数,这会显著的提高难度。

好在Lima是通过templates来解决这个问题,lima本身内置了很多模板,你也可以定制你自己的模板。然后通过模板,仅一条简单的命令,就可以创建一个虚拟机

# 创建一个ubuntu虚拟机,使用ubuntu模板
limactl create --name=debian template://ubuntu

那怎么知道它有哪些模板呢。

有两个方式.

其一是到官网的文档中了解,地址是: https://lima-vm.io/docs/templates/。 这个页面列出了lima所有内置的模板。

另一个是访问本地目录。 输入limactl help命令后, 帮助指引中会告诉你模板的本地目录

  See also template YAMLs: /opt/homebrew/share/lima/templates

这样你就可以到本地目录中,查找这些模板文件。

常用操作

简单列举一些limactl你会用到的常用场景及命令

  1. 创建虚拟机

可以通过模板创建,也可以自定义模板文件,创建时也可以指定诸如内存,硬盘,CPU数等参数

# 使用默认模板创建虚拟机,默认模板是ubuntu
limactl create --name=test
# 指定模板创建虚拟机,模板
limactl create --name=test template://debian
# 指定附加参数创建虚拟机
limactl create --cpus=2 --memory=2 --name=test template://debian
  1. 列出所有虚拟机

列出你本机安装的所有虚拟机及信息

limactl list
  1. 启动及ssh

启动一个虚拟机

# start后加上要启动的虚拟机名称
limactl start test

Ssh进入虚拟机

limactl shell test

进入后,默认是MacOS当前用户名同名用户,你需要使用sudo来执行一些root权限的工作。sudo不需要任何密码。

  1. 停止,删除及保护虚拟机

同样,虚拟机不使用时,你可以停止它。如果整个虚拟机都不需要了,删除它。为了避免误删虚拟机,你可以保护一个虚拟机

# 停止虚拟机
limactl stop test
# 删除虚拟机
limactl delete test
# 保护一个虚拟机,防止误删除
limactl protect test
# 取消对虚拟机的保护,允许删除
limactl unprotect test
  1. scp复制

操作Linux,大多会涉及到host与虚拟机文件互传。对于真正的远程Linux,我们都是用scp命令。

但对于lima来说,我们使用limactl cp来实现

# 将本机test.png复制到test虚拟机的/tmp目录
limactl cp ~/Downloads/test.png test:/tmp

# 从test虚拟机复制到本机
limactl cp test:/tmp/test.png ~/Downloads

最后

相比较而言,Lima与Multipass属于同一类工具。Lima的优势非常明显:

  • 它是开源的工具,而Multipass是并不是
  • Lima支持几乎所有Linux,而Multipass只支持Ubuntu
  • Lima不仅能做Linux虚拟机,还能承担docker desktop的功能,同样也支持k8s等

如果你还在使用类似VirtualBox或Multipass这一类的工具,Lima是你可以考虑的绝佳的更好的替代品。

Lima不仅让我删除了Multipass,还让我删除了MacOS上笨重,难用的Docker Desktop For Mac件。下一篇我再详细介绍下基于Lima替换掉Docker Desktop For Mac。

公众号关注公众号微言码道
点击返回
@ 2021-2025 御剑(lingen.liu) 版权所有