marina vs. other tools
marina isn't trying to replace your Docker runtime — it's a purpose-built multi-cluster kind lab. Here's how it lines up against the usual macOS options, and why it's designed to run alongside them.
The short version
marina is the only one of these focused on running many kind clusters at once with pure L3 routing (real pod and LoadBalancer IPs), MetalLB in every cluster, and a hostname for every LoadBalancer Service across all of them. The others are great Docker/Kubernetes runtimes, but they're single-cluster and route via port-mapping.
Capability matrix
| Aspect | marina | Rancher Desktop | Colima | OrbStack |
|---|---|---|---|---|
| Primary purpose | Multi-cluster kind lab | Docker/k3s desktop | Docker/containerd | Docker/K8s/VMs |
| Multiple clusters at once | ✓ (up to 99) | — | — | — |
| Kubernetes flavor | kind (any version) | k3s | k3s (optional) | k3s |
| Host→pod/Service routing | Pure L3, no SNAT | port-mapped | port-mapped | custom stack |
| MetalLB in every cluster | ✓ | — | — | — |
| Built-in registry mirrors | ✓ (docker/quay/gcr) | configurable | — | — |
| Coexists with other tools | ✓ | ✓ | ✓ | ✓ |
| Usable as a plain Docker host | ✓ how | ✓ | ✓ | ✓ |
| Zero-config hostnames for Kubernetes Services | ✓ <svc>.<ns>.<cluster>.demo.internal, every cluster — how |
— | — | ✓ *.k8s.orb.local, one cluster |
| Zero-config hostnames for plain Docker containers | — | — | — | ✓ *.orb.local |
| Linux VMs beyond the container host | — one VM only, but it’s a full Ubuntu you can use: marina shell |
— | — | ✓ |
| Graphical interface | Marina UI (read-mostly companion) | ✓ full GUI | — | ✓ full GUI |
| Corporate proxy & custom CA support | ✓ built in | ✓ | manual | ✓ |
marina is open source under the MIT license. For the others, capabilities — not pricing or licensing — are what matter when you're deciding what to run, so that's what the matrix compares.
Designed to coexist
Lima mirrors every guest TCP port to 127.0.0.1 on the host.
That's a convenience in isolation, but two Lima-based tools that both
manage kind clusters will race to mirror the same API-server
port (e.g. 7001) to 127.0.0.1 — and the
kubeconfigs end up pointing at the wrong cluster.
marina avoids this by default:
network.disablePortMirroring is true out of the
box. With mirroring off, marina kubeconfigs use the VM's direct
lima0 IP instead of 127.0.0.1, and every other
Lima tool keeps mirroring its own ports unaffected — no configuration
needed. Set it to false only if you run a single marina VM
and prefer stable 127.0.0.1 kubeconfigs:
$ marina config edit # set network.disablePortMirroring: false
$ marina destroy && marina up # VM-level setting; needs a fresh VM
For OrbStack, Docker Desktop, and Podman Desktop there's nothing to configure either — each uses its own VM/bridge and coexists with marina out of the box. See how this works.
When to pick marina
- You want several kind clusters at once — multi-team, multi-env, chaos testing.
- You need pods and LoadBalancers reachable by real IP, without port-forward — and by name, under
demo.internal, with no domain to own. - You want MetalLB and registry mirrors set up for you, in every cluster.
- You're on Apple Silicon and want it self-contained — no separate Lima install.
When another tool fits better
If you just need one Docker runtime or a single small cluster, a general-purpose runtime — OrbStack, Colima, or Rancher Desktop — is simpler. marina earns its keep once you're juggling several clusters and want real, routable IPs across all of them.
More specifically:
| If you want… | Reach for |
|---|---|
| Hostnames for plain Docker containers | OrbStack. *.orb.local names every container out of the box because OrbStack owns its whole network stack. marina names Kubernetes LoadBalancer Services — *.demo.internal, across every cluster — but not docker run containers. |
| Several Linux VMs alongside containers | OrbStack. marina provisions exactly one VM. That VM is a usable Ubuntu 26.04 machine — marina shell drops you into it, and marina shell <command> runs something in it and pipes through — but marina will not create a second one, and managing a fleet of arbitrary Linux machines is not what it is for. |
| The fastest plain Docker engine | OrbStack or Colima. They start in seconds and carry none of marina's cluster machinery. marina works fine as a Docker host, but a restart is on the order of fifteen seconds, not two. |
| A full GUI to manage everything | Rancher Desktop or OrbStack. Marina UI is a companion for watching state, not a replacement for the CLI. |
| A drop-in Docker Desktop replacement for a whole team | Rancher Desktop or OrbStack. marina has no installer beyond Homebrew and no policy controls. |
None of these are on marina's roadmap: it is deliberately a lightweight provisioner for local Kubernetes, not a general desktop container platform. The good news is that it coexists with all of them — you can run OrbStack for day-to-day Docker and marina when you need clusters.
See also
- Networking & L3 routing — how pure L3 routing and
disablePortMirroringactually work. - Getting started — from an empty Mac to a routable multi-cluster lab.
- Local DNS names — hostnames for every LoadBalancer Service.
- marina as a Docker host — using the VM's daemon on its own, and publishing ports to
localhost.