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:
- Despite having raised $272.9 million previously, Docker wasn't profitable
- The company went through three CEOs in 2019 alone - Steve Singh stepped down in May, was replaced by Rob Bearden, who was then replaced by Scott Johnston in November
- Docker was forced to sell its enterprise business to Mirantis for an undisclosed amount
- The company managed to secure a $35M investment in November 2019, but only after selling off major parts of its business
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:
- Runs each container as a standard user process, making it inherently more secure and lightweight
- Drop-in replacement for Docker CLI commands
- Typically offers the best cost-efficiency for enterprises, eliminating licensing fees while providing enterprise-grade features
- Rootless containers by default
- No daemon required
Cons:
- Smaller ecosystem compared to Docker
- Some Docker Compose features may not work identically
- Learning curve for Docker-specific workflows
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:
- Tests show containerd consumes fewer CPU resources compared to Docker
- Industry standard for Kubernetes
- Lightweight and focused
- Cloud native
Cons:
- Has fewer high-level features than a full-featured tool like Docker or Podman
- Migration complexity is moderate - requires installing and learning a separate client tool like nerdctl
- Less user-friendly for development
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:
- Excels for system containers
- Better isolation than application containers
- Can run multiple processes and services
- Near-native performance
Cons:
- May use more memory due to its system-level operations
- Different use case from Docker and Podman which target application containers
- Steeper learning curve
- Less portable than Docker containers
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:
- Excellent for building container images
- Works well with Podman
- No daemon required
- Fine-grained control over image layers
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:
- Focused primarily on building, not running containers
- Requires additional tools for full container lifecycle
- Learning curve for Docker users
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:
- Familiar Docker commands
- Works directly with containerd
- Supports Docker Compose syntax
- Additional features like image encryption
Cons:
- Still relatively new and less battle-tested
- Some Docker features still missing
- Requires containerd knowledge for troubleshooting
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:
- Team expertise: Docker has the lowest learning curve for beginners
- Use case specificity: LXC excels for system containers, while Docker and Podman target application containers
- Performance needs: All perform well, but choose based on your specific requirements
- 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:
- For drop-in replacement: Podman is your best bet
- For Kubernetes environments: containerd is the natural choice
- For system-level containers: LXC/LXD provides better isolation
- For CI/CD pipelines: Buildah excels at image building
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!