Skip to content

All Roads (Often) Lead to Docker

Why containers became the common language of self-hosting

When you start exploring self-hosting, you’ll notice a pattern: almost everything runs on Docker. Wikis, chat servers, databases, media servers, developer tools — if it’s open source and self-hosted, odds are there’s a Docker image for it.

That’s the real power of Docker: portability. You don’t have to worry about what OS you’re on, or whether your server matches a project’s list of dependencies. You pull the container, run it, and it “just works.”

It also means you can switch directions without losing everything. Want to move from Ubuntu to Fedora? From bare-metal to a VPS? From one old PC to another? As long as Docker is installed, the process is basically the same.

So when you see a project that looks interesting, don’t overthink the platform or the setup. Learn Docker once — and you’ll have the key to unlock nearly the entire self-hosting world.

Key Terms in the Container World

Docker
A platform for packaging and running applications in isolated environments called containers. It abstracts away the underlying system so the same app can run anywhere.

Docker Compose
A companion tool to Docker that lets you define and run multi-container applications using a simple YAML file. Great for projects that need a database, cache, and app all wired together.

Container
A lightweight, stand-alone environment that includes everything an application needs to run: code, libraries, and dependencies. Unlike virtual machines, containers share the host’s kernel, making them efficient and fast.

runc
The low-level runtime that actually creates and runs containers according to the Open Container Initiative (OCI) standard. Docker uses runc under the hood.

LXC (Linux Containers)
An older but still widely used container technology that provides a lightweight virtualization layer closer to a traditional Linux system. You get a “system container” that feels more like a VM than an app sandbox.

Kubernetes
An orchestration platform for managing containers across multiple servers. Handles scaling, networking, and failover automatically — often described as “production-grade container management.”

Podman
A daemonless container engine that is compatible with Docker commands but doesn’t require a background service. Popular for running containers rootless and integrating with systemd.

OCI (Open Container Initiative)
An open standard that defines how containers should be built and run, ensuring compatibility between tools like Docker, Podman, and runc.

CRI-O
A lightweight container runtime built specifically for Kubernetes, designed to use only what Kubernetes needs and nothing more. It runs containers via runc or other OCI-compliant runtimes.

K3s
A slimmed-down distribution of Kubernetes designed for edge devices, home labs, and small clusters. It includes everything you need in a single binary, making Kubernetes easier to install and manage.