Docker has been a part of my life for about 4.5 years now, it started as an experiment to be able to run a simple postgres instance locally and not for it's intended purpose of creating reusable app containers.
This has been a great experience when I used to work with it on Linux based systems. Since the virtualization doesn't need a new qemu instance and is mostly based off the restrictively libs and permissions of linux's base.
This is a little more of work on Mac based systems where direct permission based container creation is a little hard, so the solution involves running a qemu instance on the system and then running the docker engine layer on top of it.
The actual concept is a lot more complicated than what I've explained but it's what's got that container engine running and the docker-desktop app is responsible for setting this up on installation.
That's the context for why I've moved to using alternatives of the official docker-desktop over the course of ~6 months.
Docker desktop's RAM usage started effecting my other work and if you know me, then you know that I have a good set of editors, servers and apps open at all times. On a system with just 8GB of RAM, everything is basically fighting for the memory.
And, I'd like to introduce people to 2 alternatives that I've been using on 2 macbooks. These are both slightly different approaches but they still do end up doing the following layer approaches
Here's the alternatives that I've been using
It works on top of Lima-VM which is basically a configuration based linux container stand up utility. It's similar to WSL2 in terms of goals and is built with the assumption that every container shares a few common things, ports, network, volumes etc.
Colima, takes this and adds in proper docker aliases for you to be able to run docker like you normaly would but instead on the colima container instead of the docker-desktop container.
It's faster than docker desktop, lower in memory consumption but the initial start of Colima is about the same as docker desktop. This is when colima first downloads and creates a new linux base image which is understandable.
The other macbook has been running orbstack for about the same amount of time now and I think I prefer orbstack over colima for the following reasons.
Yes, orbstack has a lot more features and is faster in both startup times and smaller in installation and is being actively developed by a really capable developer but at the end of the day, the convenience that the GUI provides me with the menu bar actions and ability to start, shut, create machines really quickly is what made it a joy to use.
I type at a decent speed (~100WPM), so doing the same in colima takes no time either but having that menubar UI is just faster when I need to quickly look at running instances and their exposed ports, this is a single command in docker but the information is an ascii table and it's not always pleasantly displayed on a tiny screen.
For the general use case of standing up services and running virtual linux machines to test out scripts and other cross platform stuff I write, it's been easy on both, so there's no winner here because based on what I'm doing , I might use either.
If I'm setting up a remote mac, CI, it's going to be easier to setup colima and control it since a GUI is not something I can use but if it's for my personal computing and work, then it's an easy choice to just go with OrbStack.
That's about it for this post, Adios!