When Docker altered Docker Desktop licensing in 2021, teams received emails from procurement to stop using it or buy seats. Switching a Mac to Lima after such emails, the command line remains nearly unchanged. Containers run, ports forward, and bind mounts appear inside the container.

That leaves a question: what is doing the work now? Docker Desktop feels like one thing. Lima seems like tangled parts.

This article explains what Lima is, how it runs Linux on your Mac, and its relation to tools like nerdctl, Colima, and Rancher Desktop.

What Is Lima?

Lima launches Linux virtual machines on your Mac with automatic file sharing and port forwarding. The name is short for “Linux Machines.”

A virtual machine (VM) is a guest OS running inside your real one, with its own kernel, isolated from the host. Lima makes the guest VM feel invisible. You run a command on your Mac, and it executes inside Linux, accessing files on your Mac via a port. The VM does the work; Lima hides the seams.

Lima provides the Linux box that container engines need to run on a Mac. The container engine and docker-style commands sit on top.

Why Lima Exists

Containers are a Linux feature, built on namespaces for isolation and cgroups for resource limits. Since macOS lacks a Linux kernel, a Linux container requires a Linux kernel from another source. This has always been the case.

Docker Desktop used a hidden Linux VM with a wrapper, so most Mac users ran Linux without knowing. When licensing costs increased for bigger companies, people examined the underlying system.

Lima is like WSL2, a managed Linux VM that closely integrates with the host, making the boundary nearly invisible. Its goal is to give Mac a real Linux kernel and hide the plumbing.

How Lima Works

Three components do the heavy lifting: the hypervisor for the VM, file sharing for code, and port forwarding for services.

flowchart TB subgraph Mac["Your Mac (host)"] CLI["Your terminal: limactl, nerdctl"] Files["~/project on disk"] Port["localhost:8080"] end subgraph VM["Lima guest VM (Linux)"] Kernel["Linux kernel"] Containerd["containerd + your container"] end CLI -->|controls| Kernel Files -.->|shared into| Containerd Containerd -.->|forwarded to| Port Kernel --> Containerd

The hypervisor runs the Linux kernel

A hypervisor creates and runs a VM. Lima supports several options: on Apple Silicon and recent macOS, it defaults to Apple’s Virtualization.framework (vz driver), which is fast because it’s built into the OS. The older alternative is QEMU, a portable emulator with performance costs. Lima also supports WSL2 on Windows and krunkit for GPU workloads.

The default guest is Ubuntu, but Lima also provides templates for many other distributions. You rarely log into the guest manually; instead, you issue a command to access it.

File sharing makes your code appear inside the VM

Editing code on your Mac while it runs in Linux works only if both see the same files. Lima mounts Mac directories into the guest, so ~/project exists at the same path inside the VM. You edit on your Mac; the container sees the change—no copying or syncing.

Port forwarding makes Linux services reachable from your Mac

When a container inside the VM binds to a port, that port lives on the guest’s network, not your Mac’s. Lima watches for those bindings and forwards them automatically, so a service on port 8080 in Linux answers at localhost:8080 in your browser. That forwarding makes the VM feel local instead of remote.

How Lima Connects to the Tools You Actually Type

Most newcomers struggle with this part: they install Lima but rarely type lima. Instead, they use nerdctl, install Colima, or open Rancher Desktop. Understanding these relationships is key to the mental model.

Lima is the VM provider, running a container engine inside the guest, usually containerd, which is used by production Kubernetes. nerdctl interacts with containerd using Docker-like commands, making nerdctl run similar to docker run. Lima’s default setup includes containerd and nerdctl, enabling immediate container runs after installation.

Colima and Rancher Desktop, built on Lima, extend its capabilities. Colima offers a Docker-compatible daemon and socket with one command, ensuring docker and docker compose work seamlessly. Rancher Desktop adds a GUI, Kubernetes, and container runtime, mimicking Docker Desktop. When users say they replaced Docker Desktop with Colima, they are actually running Lima.

Layering from metal up: hypervisor hosts a Lima-managed Linux VM, which runs containerd, and tools like nerdctl, Colima, or Rancher Desktop are used.

Rosetta and the Apple Silicon Problem

Apple Silicon Macs use ARM, but many containers are still x86_64. Running x86 images on ARM requires emulation, which is slow and can be unreliable.

Under the vz driver, Lima hands translation to Rosetta, Apple’s binary translator. Rosetta converts x86 to ARM faster than QEMU. This shows Lima’s design: it borrows Apple’s best translation layer, a reason to choose the vz driver on modern Macs.

Trade-offs and Limitations

Lima fits most local container work but strains in predictable areas. Understanding where it strains prevents blaming it for Linux-on-Mac issues.

  • A VM costs memory and CPU. Lima reserves resources for the guest, like Docker Desktop did. The cost was always there, and Lima makes it visible.
  • Filesystem sharing has overhead. Crossing the host-to-guest boundary for each file read is slower than native disk access, especially in projects with large dependencies or intensive file watching. Choosing the right mount type in the config reduces the gap, but the boundary persists.
  • You manage more pieces. Docker Desktop hides the VM, engine, and updates behind one app. With raw Lima, you control the VM via a YAML configuration, offering more control and flexibility.
  • No Docker API by default. Lima provides containerd and nerdctl, not docker. If your scripts or tools expect the Docker socket, use Colima or adjust the Docker template instead of Lima.

Common Misconceptions

Most confusion about Lima comes from treating it as a thing it isn’t.

  • “Lima is a Docker replacement.” Lima replaces the hidden VM, not the Docker command. The replacement for docker run is nerdctl or the Docker daemon set up by Colima. Lima is the platform they stand on.
  • “Lima and Colima are the same thing.” Colima sits on Lima, the Linux VM manager. Colima is an opinionated wrapper providing a Docker-compatible setup in one command. Choosing Colima means opting for Lima plus convenience.
  • “Lima only runs on macOS.” Lima runs on Linux hosts, supports WSL2 on Windows, and is popular on macOS where many moved to Docker Desktop, but its scope is broader.
  • “It must be slow because it’s QEMU.” On Apple Silicon, Lima uses the vz driver with Apple’s Virtualization framework and Rosetta for x86 images. QEMU is a fallback, not the default.
  • “Lima is a stopgap until something better ships.” Lima joined the CNCF as a Sandbox project in September 2022, was promoted to Incubating in October 2025, and ships under the Apache 2.0 license. It is the foundation for Colima and Rancher Desktop and is maintained accordingly.

Conclusion

Lima’s mental model has three layers: at the bottom, a hypervisor like Apple’s vz runs a Linux VM; in the middle, Lima manages this VM, making files and ports feel local; on top, a container engine like containerd handles the container work, with commands like nerdctl or wrappers like Colima.

Docker Desktop combines all three layers into one icon, while Lima unbundles them, showing the seams — making it more to understand upfront. The benefit is a transparent, no-license Linux machine on your Mac, built from the same cloud-native components.

Next Steps

  • Read the official Lima getting started guide to spin up your first VM and run a container with nerdctl.
  • If you want a drop-in Docker command experience, look at Colima, which wraps Lima for exactly that.
  • If you prefer a graphical app with Kubernetes built in, try Rancher Desktop.

References

  • Lima documentation, the official source for drivers, file sharing, and configuration.
  • Lima on GitHub, for the source, license, and release notes.
  • Colima, the Lima-based tool that provides a Docker-compatible runtime.
  • Rancher Desktop, a graphical Docker Desktop alternative built on Lima.