lima-vm icon

lima-vm

开源 免费

Lima是一款macOS上的轻量级Linux虚拟机管理器,让开发者无缝运行Linux容器和虚拟机,完美支持ARM和x86架构,是本地开发测试环境的理想选择。

lima-vm

概述

Lima (Linux Machines) 是为 macOS 提供的 Linux 虚拟机管理器,它旨在通过自动文件共享、网络端口转发和简化配置,在 macOS 上提供接近 WSL2 的用户体验。Lima 最初的目标是为了在 macOS 上推广 containerd 和 nerdctl,但它同样支持运行其他容器引擎(如 Docker、Podman、Kubernetes)以及非容器化的 Linux 应用和工作负载。此外,Lima 也可以运行在 Linux、NetBSD 等其他非 macOS 主机上。

主要功能特点

1. 简化 Linux 虚拟机管理

  • 通过命令行工具 limactl 可快速创建、启动、停止和管理多个 Linux 虚拟机实例。
  • 支持多种预设模板(如 dockerk8s),一键创建预配置好的容器化环境。
  • 虚拟机配置基于 YAML 文件,易于自定义和版本控制。

2. 无缝的文件共享

  • 自动挂载 macOS 用户目录(如 $HOME)到虚拟机中,实现主机和虚拟机间的双向文件访问。
  • 支持自定义挂载点,方便项目文件共享。

3. 自动端口转发

  • 类似 WSL2,自动配置网络,使虚拟机中的应用可以通过主机端口直接访问。
  • 支持手动端口映射配置,适用于 Web 服务、数据库等需要网络访问的场景。

4. 多容器引擎支持

  • 内置 containerd 和 nerdctl:Lima 原生支持 containerd 容器运行时及其命令行工具 nerdctl。
  • Docker 支持:可通过 limactl start template://docker 快速启动一个预装 Docker 的 VM,并通过设置 DOCKER_HOST 环境变量让本机 Docker 客户端连接。
  • Kubernetes 支持:提供 k8s 模板,快速搭建单节点 Kubernetes 集群,并自动配置 KUBECONFIG
  • Podman 支持:同样可以运行 Podman 作为容器引擎。

5. 跨平台兼容性

  • 虽然主要面向 macOS 用户,但 Lima 也可以运行在 Linux、NetBSD 等其他操作系统上,提供了良好的跨主机一致性。

6. 社区与生态集成

  • 被多个流行的桌面容器管理工具采用,如 Rancher DesktopColimaFinchPodman Desktop
  • 提供图形化辅助工具,如 Lima xbar 插件,可从 macOS 菜单栏快速启动/停止 VM 并查看状态。

核心优势

🚀 开箱即用的容器开发体验

对于 macOS 上的容器开发者,Lima 极大地简化了本机构建和测试 Linux 容器的工作流。无需复杂的 Docker Desktop 配置或第三方虚拟机软件设置,只需几条命令即可获得一个功能完整的 Linux 容器环境。

🔧 灵活性与选择性

Lima 不绑定于单一容器技术栈。用户可以根据项目需求,灵活选择 containerd、Docker 或 Kubernetes,甚至在同一台主机上运行多个不同配置的 VM 实例。

📚 声明式配置与版本控制

虚拟机的所有配置(CPU、内存、挂载、网络等)均保存在 YAML 文件中,可以纳入 Git 管理,便于团队共享和复现一致的环境。

🛡 轻量且专注

相比于运行完整的桌面级虚拟机,Lima 更专注于为命令行和容器工作负载提供优化的轻量级 Linux 环境,资源占用更少,启动速度更快。

🌉 出色的主机集成

自动的文件共享和端口转发消除了主机与虚拟机之间交互的障碍,让开发者感觉像是在本地直接运行 Linux 命令和容器,提升了开发效率。

快速开始

使用 Homebrew 安装 Lima:

brew install lima

启动一个默认的 Lima VM:

limactl start

在虚拟机中运行 Linux 命令:

lima uname -a

启动一个带有 Docker 的 VM:

limactl start template://docker
export DOCKER_HOST=$(limactl list docker --format 'unix://{{.Dir}}/sock/docker.sock')
docker run --rm hello-world

启动一个单节点 Kubernetes 集群:

limactl start template://k8s
export KUBECONFIG=$(limactl list k8s --format 'unix://{{.Dir}}/copied-from-guest/kubeconfig.yaml')
kubectl get nodes

了解更多

  • 社区交流:可通过 Slack (#lima 频道) 参与讨论。

Lima 是一个活跃的开源项目,欢迎开发者提交 Issue 和 Pull Request 来共同改进。所有贡献都需要遵守项目的 开发者原创证书 (DCO) 要求。

本站所有软件全部同步自 Awesome mac项目;内容全部由 Awesome mac项目整理获得,应用版权归原作者所有。

相关推荐