So far we have only talked about Docker and there's a pretty good reason for that: for personal use or developer use, Docker is pretty much the indisputable champion. It has all the developer experience bells and whistles, all the mindshare of developers everywhere, and even all the other tools we are about to talk about like to tout their Docker compatability. However it good to keep in mind that Docker is a for-profit company and thus they are trying to align your incentives to there's and vice versa. It's good to know what else exists out there.
I don't have a lot of experience with any of these as I've exclusively used Docker my whole career, but I wanted to get these names out in front of you so you recognize what they are.
Container Builders
This is what would replace docker build
. What tools out there exist for building containers?
- Buildah – Generally can read a Dockerfile without any problems. It also has the neat ability to use hosts' package managers instead of having to include those inside your Docker container. Supported by Red Hat / IBM.
Container Runtime Tools
This is what would replace docker run
. This is the toolset that orchestrates the runtime that actually runs the container.
- Podman – Docker relies on having a daemon (background process) in the background to run its containers. Think of it like a client and server. Podman is daemonless: it builds containers to be run directly by the host OS without a daemon in the middle. Podman also has Podman Compose for Docker Compose situations. Supported by Red Hat / IBM.
- Colima – A project to make running container on macOS and Linux easier by cutting down on setup. Still uses Docker's tools under the hood, just a tool to make interacting with it easier.
- rkt – This was a project from CoreOS, who got bought by Red Hat, who got bought by IBM. Along the way rkt got deprecated so this project isn't maintained. Just wanted to mention it because my last course made mention of it.
Container Runtimes
This is the actual code executing your container.
- containerd – So Docker actually uses containerd inside of it itself by default, but you can use containerd without Docker and you can use Docker with other Runtimes. containerd is a CNCF project that handles the running of containers, and Docker is a tool that wraps that to add all the Docker stuff on top of it. Docker has a deeper discussion if you want to know more.
- gVisor – Google's container runtime with a particular focus on security. A hot topic at the moment, I see a lot of companies moving stuff to gVisor.
- Kata – I know way less about Kata, but they use full-on VMs to separate their "containers" as opposed to just using container features to separate them. From reading their docs, their intent is to be mixed-and-matched with actual containers and only used for containers that need the strongest separation.
Container Orchestrators
These are alternatives to Kubernetes (and somewhat Docker Compose)
- Apache Mesos – The less I say about Mesos the better as it's very complicated and it's a tool I don't know or use. It's been around for a long time and therefore has some core believers in it. It predates Kubernetes even. Apache actually tried to stop development on Mesos and people revolted so now they still maintain it.
- Docker Swarm – Before Kubernetes really won out, Docker was push Swarm hard, its own version of Kubernetes. Nowadays unless you're planning on using Swarm, use Compose and Kubernetes.
- OpenShift – OpenShift is Red Hat's layer on top of Kubernetes, so indeed it is using Kubernetes underneath the hood. It includes things in it that Kubernetes lacks like CI/CD.
- Nomad – I'm a big fan of Hashicorp and the products they've made. I think they do a great job making DevOps tools approachable by developers and that's why they're so popular. Nomad is a tool that takes Kubernetes and strips it down to the most-simple it can be.
- Rancher – A project by SUSE (the team who make SUSE Linux) that itself also wraps Kubernetes but with extras stuff in it.
Desktop Apps
Alternatives to the Docker Desktop app.
- Podman Desktop – Since Red Hat / IBM makes Podman to run containers, they made a desktop app like Docker Desktop to be able to use Podman and Buildah the same way.
- Rancher Deskopt – Rancher provides a desktop app like Docker Desktop to build and run containers for devs. Users Docker and Rancher and is maintained by SUSE (who make SUSE Linux.)