software

Docker

A container runtime that packages applications into isolated, portable environments, making self hosted software straightforward to deploy and manage.

Docker is a container runtime that packages applications and their dependencies into isolated, self contained units. It is the standard way to run self hosted software on a home lab.

Why it changes how self-hosting works

Installing software directly onto a Raspberry Pi creates dependency conflicts and makes things difficult to update or remove cleanly. Docker eliminates this. Each application runs in its own container, completely isolated from everything else on the machine. You pull an image, run it, and the application is up. When you want to remove it, you stop and delete the container and nothing is left behind.

Most self hosted software ships as an official Docker image. Frigate, Home Assistant, AdGuard Home, Nextcloud, and Portainer all deploy this way. The result is that getting a new application running typically takes minutes rather than hours.

How it is deployed

Docker Engine is installed on the Raspberry Pi's operating system. From there, containers are managed either through the command line or through Portainer, a browser-based interface that makes container management visual and accessible. Applications can be defined as stacks using Docker Compose files, which describe the full configuration of a service in a single text file.

The Docker documentation at docker.com covers installation and setup for Raspberry Pi OS and all other supported platforms.