OrbStack: Why I Forgot About Docker Desktop

Working on a MacBook with Docker Desktop, I often encountered the system becoming less responsive, especially when running multiple containers simultaneously. High CPU and memory usage significantly affected battery life.

But recently I came across OrbStack, and it changed my workflow so much that I decided to share my experience. Spoiler: now my MacBook doesn't turn into a heater, the battery lasts longer, and Docker containers fly.

What is OrbStack?

OrbStack is not just another alternative to Docker Desktop. It is an all-in-one solution for running containers, Kubernetes clusters, and Linux virtual machines on macOS. When I first heard about it, I was skeptical. We've all seen many "alternatives" to Docker Desktop that ended up creating more problems than they solved.

But OrbStack turned out to be different. Its main difference is that it was originally created with the specifics of macOS and container work on Mac in mind. And it shows in everything.

Why did I switch to OrbStack?

Performance

The first thing I noticed after switching was the difference in speed:

  • OrbStack starts in 2 seconds, while Docker Desktop usually takes 20-30 seconds

  • Image building is about 40-50% faster

  • File operations have noticeably sped up, which is especially noticeable in large projects

Efficient resource usage

Significant improvements are also noticeable in the use of system resources:

  • RAM is used 3-4 times more efficiently

  • CPU load in idle mode is minimal

  • Power consumption is significantly lower - tests show 180 mW versus 726 mW for Docker Desktop when running the same containers (these figures can be obtained when running Sentry, commit 15fa261f)

Useful features for development

During the work, I appreciated several functions that significantly simplify development:

  • Automatic domain name management: each container is available as container-name.orb.local, Kubernetes services as service.namespace.svc.cluster.local, Linux machines as machine-name.orb.local

  • Direct access to container files through Finder - you can work with container files as with a regular folder

  • Excellent debugging capabilities, which are especially useful when working with minimal and distroless containers. However, this feature is only available in the paid version, the rest is in OpenSource, for personal and non-commercial use. I refused after the trial, the free version is more than enough.

Technical implementation

The architecture of the application is quite interesting, it is immediately clear that they tried, and did not just stretch the UI. Key points:

  • Using Rosetta instead of QEMU to emulate x86 on Apple Silicon, which provides better performance

  • Components written specifically for macOS in Swift, Go, Rust, and C, which allows efficient use of system APIs

  • Optimized file system based on VirtioFS with thoughtful caching

  • Own implementation of the network stack with proper support for VPN and SSH

Easy migration

When it came to migration, I expected the usual headache with transferring projects. But it turned out to be surprisingly simple:

# Installation
brew install orbstack
# Data migration
orb migrate docker
# Context switching
docker context use orbstack

And that's it. Really. All my containers, images, and volumes were transferred automatically. Moreover, I can easily switch between OrbStack and Docker Desktop if needed - just change the context.

What about development tools?

This was my main fear - compatibility with existing tools. But it turned out that everything works like clockwork:

  • In my favorite JetBrains IDEs, I didn't even notice any changes

  • In VS Code, it also works without problems

  • docker-compose, kubectl, helm - everything continues to work as before

Full-fledged work with Linux

I especially want to note the ability to work with Linux machines. Unlike Docker Desktop, OrbStack allows you to run full-fledged virtual machines with various Linux distributions. This is especially convenient when you need to:

  • Test an application in a specific distribution

  • Run services that are difficult to containerize

  • Use specific versions of Linux for development

OrbStack supports 15 different distributions, and working with them is really convenient - each machine is accessible by name (machine-name.orb.local), and files can be transferred by simple drag and drop.

If you need to run graphical Linux applications, additional setup with XQuartz or Xrdp will be required. This is a minor limitation, but for most development tasks, it is not critical.

Conclusions

After several months of working with OrbStack, I can say that it is a worthy alternative to Docker Desktop. The main advantages that I noticed in everyday work:

  • Faster startup and operation of containers

  • Efficient use of system resources

  • Convenient work with files and network

  • Ability to run full-fledged Linux machines

  • Easy migration of existing projects

It is important to note that like any tool, OrbStack may not be suitable for all use cases. I recommend trying it yourself - thanks to easy migration, it won't take much time. You can switch back later

P.S. If you are on Colima, it is also faster, you can switch just as easily - install and switch context.

Comments