Quick intro
What pushed me to write this article? One word: Colima.
At some point, we had to uninstall Docker Desktop at work and start using Colima via the CLI, but I never really understood why.
For a while, I just went along with it.
Then one day, I decided to dig into how our app’s dev environment actually starts up. The first command I run starts colima, followed by docker compose -up.
And that got me thinking:
if we don’t have Docker Desktop anymore, why are we still running Docker commands?
So… what is Colima, really? And that’s how this whole investigation started, which I am going to share with you now.
The Basics: The Docker Engine

First, let's have a quick overview of what the Docker engine consists of.
Under the hood, Docker is made up of two daemons (background processes that interact with the system):
dockerd: listens for Docker API requests and manages objects like images, containers, volumes, and networks.
containerd: handles only the container lifecycle, with a lower-level interface.
Initially, containerd was just a component within Docker, but as containers became more widely adopted, things got complicated, especially when Kubernetes entered the picture.
Kubernetes Didn't Want Docker
Originally, Kubernetes only worked with Docker, but over time, people wanted to use different runtimes (like containerd standalone, etc.). So the Kubernetes team created CRI, so it could support any runtime, as long as it followed this standard interface.
CRI (Container Runtime Interface): API that tells Kube how to talk to a container runtime
On top of that, dockerd was doing way more then Kube needed, like handling volumes, networks, image builds, and logs. that's why at a certain point the Kubernetes team decided to build something simpler: a lightweight runtime made just for Kubernetes, called CRI-O
Docker Inc. Strategy
At that point, Docker Inc. realised something important: “We're not going to make money from dockerd or containerd, but we can make money from developer tools!”
So in 2017, Docker made a bold move.
It:
open-sourced containerd
donated it to the CNCF (Cloud Native Computing Foundation)
refocused on Docker Desktop and Docker Hub
But the strategy didn't stop there. Docker also decided to open-source dockerd by moving it into the Moby project,an official open-source project by Docker to "to enable and accelerate software containerization".
Smart play. After all, containerd runs Docker images, ...and where are most of those stored? On Docker Hub!
Now the ecosystem could adopt containerd freely, and Docker could monetize its dev tools (and yes, Docker still uses containerd internally as part of dockerd. That hasn't change).
containerd: used by Kubernetes, cloud, CI/CD; is industry standard
dockerd: used by Docker CLI, Colima, dev env; is NOT industry standard
Kubernetes surrenders to containerd
Once containerd became an open-source standalone runtime, Kubernetes had to adopt it.
Why?
containerd became the most widely adopted container runtime in Kubernetes clusters, major cloud providers (AWS, GCP, Azure, IBM...) all adopted it.
CRI-O remained a valid alternative, but containerd won the popularity contest.
Kube didn’t drop CRI. It still uses it, but now it talks to containerd directly using a CRI plugin, rather than going through dockerd.
Enter Colima
While this corporate beef was going on, most devs were still using Docker Desktop on MacOS to run containers locally and they were happy.
But happiness is an ephemeral emotion, easily disrupted, and in the most cases the disruption is caused by money: Docker Inc. started charging for Docker Desktop in some cases, and developers started looking for alternatives because they love free stuff.
That’s when Colima came in to save the day (and the devs' happiness).
What Is Colima?
Colima is a free, open-source replacement for Docker Desktop.
It doesn't replace the Docker engine itself, instead, it:
provides a working dockerd + containerd environment
runs inside a lightweight Linux VM (via Lima)
works beautifully on macOS
Is CLI-based, fast, and ideal for devs who don’t need a GUI.
So basically, Colima gives you a fully Docker-compatible setup, without Docker Desktop, without the licensing restrictions but still using the docker's commands.
So, we've got the answer: Colima doesn’t replace the Docker engine: it replaces Docker Desktop.

Fun-fact: Docker Runs Natively on Linux
Of course it does. How could it not!
Linux already has everything Docker needs built-in: cgroups, namespaces, container-friendly file systems...
Plus, Docker runs directly on the OS, that means that no VM required!
On the other hand though, on MacOS and Windows, a VM is necessary, therefore you need to install Docker Desktop or Colima or something else.
TL;DR
dockerd is open-source, lives in the Moby project, and is still used by Docker
containerd is also open-source but is not in Docker's hands anymore now and is the industry standard container runtime.
Docker Inc. makes money from Docker Desktop, not the daemons
Kubernetes adopted containerd because it was already widespread
Docker Hub is still the central container image registry
Colima is a free alternative to Docker Desktop on macOS
On Linux, Docker runs natively as no VM required