DevOps


What Is Colima, Really? And Why Does It Work Like Docker?


April 19, 2025



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

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):

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:

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:

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.

colima is



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