Will Code For Food :)

When Docker Almost Died: Exploring Container Alternatives

During one of my mindless internet browsing sessions, I stumbled upon (Side note: I really miss StumbleUpon for finding random sites - they shut it down in 2018 🪦) an article about Docker almost going under back in 2019. Anyway, reading about how Docker nearly died got me thinking: what would we do if Docker disappeared tomorrow?

The Elegant Solution That Almost Wasn't

Before diving into alternatives, let's appreciate what Docker achieved. It's one of the most elegant pieces of tech built in the last 10 years, solving the notorious "works on my machine" problem by literally shipping the whole machine. It has become an indispensable part of the tech stack for most tech companies.

But there was a time when Docker was in serious financial trouble.

The 2019 Crisis That Almost Killed Docker

In September 2019, leaked memos revealed that Docker CEO Rob Bearden acknowledged "uncertainty [which] brings with it significant challenges" as the company desperately sought funding. While companies like Elastic and MongoDB had managed to build big businesses around their open-source software, Docker was looking to private investors just to keep going.

The situation was dire:

There was a real chance of Docker shutting down and possibly not being maintained—which is the case with any software. There's always a possibility of it shutting down for whatever reasons. This made me wonder: if Docker shuts down and is no longer maintained, what are our alternatives?

Alternatives: Your Options If Docker Disappears

Here's a comprehensive breakdown of the main alternatives to Docker:

1. Podman - The Drop-in Replacement

What it is: A daemonless, rootless container engine that's designed to be a direct Docker replacement.

Pros:

Cons:

Migration effort: Minimal - literally just replace docker with podman in your commands. Your existing Dockerfiles work as-is. You might need to adjust some networking configs for rootless mode, but most workflows transfer directly.

Pricing: Free and open source
Maintenance: Actively maintained by Red Hat
Best for: Security-conscious environments, enterprise deployments
Getting started: Podman Official Tutorial

2. containerd - The Kubernetes Native Choice

What it is: A runtime that focuses purely on runtime operations and serves as the container runtime for Kubernetes.

Pros:

Cons:

Migration effort: Medium - you'll need to install containerd and either learn ctr commands or install nerdctl for familiar syntax. Your CI/CD pipelines will need updates since you can't build images directly. Plan for some config file changes and team training.

Pricing: Free and open source
Maintenance: Actively maintained by CNCF
Best for: Kubernetes deployments, cloud-native applications
Getting started: containerd Documentation

3. LXC/LXD - System-Level Containers

What it is: Linux container technology that provides OS-level virtualization.

Pros:

Cons:

Migration effort: High - this isn't really a migration, it's a complete rethink. You'd redesign your architecture to use system containers instead of app containers. Think moving from microservices back to more traditional server setups, but containerized.

Pricing: Free and open source
Maintenance: Actively maintained by Canonical
Best for: Long-running workloads, system containers
Getting started: LXD Tutorial

4. Buildah - Container Image Builder

What it is: A tool that enables you to add content back to a container image, where the buildah run command imitates the RUN command in a Dockerfile.

Pros:

Migration effort: Medium - mainly impacts your CI/CD image building. You'd replace docker build with Buildah scripts and pair it with Podman for running containers. Your development workflow stays mostly the same, but build pipelines need rewriting.

Cons:

Pricing: Free and open source
Maintenance: Actively maintained by Red Hat
Best for: Container image building pipelines
Getting started: Buildah Tutorial

5. nerdctl - containerd CLI

What it is: containerd with a Docker-like command-line interface - making containerd user-friendly.

Pros:

Cons:

Migration effort: Low - commands are nearly identical (docker run becomes nerdctl run), and it supports docker-compose.yml files. Main effort is installing containerd + nerdctl and updating your scripts to use the new binary name.

Pricing: Free and open source
Maintenance: Actively maintained
Best for: Teams transitioning from Docker to containerd, local development
Getting started: nerdctl GitHub

Migration Considerations

When considering alternatives, think about:

  1. Team expertise: Docker has the lowest learning curve for beginners
  2. Use case specificity: LXC excels for system containers, while Docker and Podman target application containers
  3. Performance needs: All perform well, but choose based on your specific requirements
  4. Security requirements: Podman's rootless approach may be preferred in security-conscious environments

Docker's Recovery

It's good to know there are some decent alternatives even if Docker goes belly up. Although it seems like Docker has recovered from their troubles and is doing pretty well now. The company reached $207M in annual recurring revenue (ARR) by 2024, up 25% year-over-year from $165M in 2023. They successfully pivoted to a per-seat subscription model for Docker Desktop, which has proven sustainable.

The 2019 crisis was a wake-up call that even essential technologies can face existential threats. While Docker has successfully turned things around, exploring alternatives taught me a few things:

Either way, it's always good to have options. The container ecosystem is robust enough that if Docker disappeared tomorrow, we'd have viable alternatives to keep our applications running. Though let's hope it doesn't come to that!