Get Started

Docker without fear: run any self-hosted app in a container

Most self-hosted apps say "just run this Docker command". By step 3 you'll have a website monitor running on your own PC from one line, then a private budgeting app next to it. Along the way, learn what images, containers, volumes and ports are, and the habits that keep your data safe.

105 minIntermediateTools: Free for personal use and small businesses. Larger companies need a paid Docker Desktop plan (from $9 per user a month, billed yearly). Docker Engine on Linux is free for everyone.Step 1 free
Docker installed the right way for your system, and the four words (image, container, volume, port) that make every self-hosting guide readable
Uptime Kuma running in a container, first from one docker run line, then from a compose.yaml you understand line by line
A routine for logs, updates, backups, restores and clean-ups that works for any app
  • Safe defaults: private ports, pinned versions, secrets out of your files, and a five-question checklist for any README's Docker instructions
  • A starter kit: compose files for Uptime Kuma and Actual Budget, plus backup and restore scripts for Windows, Mac and Linux
Before you start
  • A 64-bit computer with 8GB of RAM. On Windows: Windows 10 22H2 or Windows 11 23H2 or newer, with hardware virtualisation switched on (step 2 shows how to check). On Linux: Ubuntu 22.04, 24.04 or 26.04 LTS, or another distribution on Docker's supported list ↗. A recent Mac also works.
  • Admin rights once, on Windows. Docker Desktop needs WSL 2 (Windows Subsystem for Linux), and turning that on the first time needs an administrator. Docker Desktop itself can then install just for your user, without admin.
  • Several GB of free disk space for Docker Desktop and its Linux engine. The Uptime Kuma image in this mission is a 182MB download, and Actual Budget's is 120MB.
  • Docker Desktop's licence. It's free for personal use, education, non-commercial open source and small businesses (fewer than 250 employees and less than $10 million in annual revenue). Bigger organisations need a paid plan, from $9 per user a month billed yearly (current prices are on Docker's pricing page ↗). Docker Engine on Linux is open source and free for everyone.
  • The terminal basics. You'll type every command. New to it? Do the Terminal survival kit first.
  • A password manager for the app logins you create. KeePassXC is free.
01/07Learn the four words: image, container, volume, port0 done
STEP 01 of 07~5 min

Learn the four words: image, container, volume, port

Every self-hosting README assumes you know these. Once they click, a long `docker run` line stops looking like a magic spell.

  1. Docker runs apps in containers: sealed boxes that hold an app and everything it needs, sharing your computer's power but not its files. That's why one command gives you the same app on Windows, a Mac, a Linux laptop or a £5 server. Four words do most of the work:

    • Image: the recipe. A read-only package you download from a registry such as Docker Hub. Its name has two halves: louislam/uptime-kuma says who and what, and the tag after the colon, 2.5.5-slim, says which version.
    • Container: a running copy of an image. Containers are disposable: you delete and recreate them all the time. Updating an app means throwing its container away and making a new one from a newer image.
    • Volume: where the data lives. Storage that Docker manages outside the container, attached at a folder inside it. Delete the container and the volume stays. Forget the volume and your data dies with the container.
    • Port: the door. An app listens on a port inside its container, and nothing outside can reach it until you publish that port. 127.0.0.1:3001:3001 reads as: on this computer's private address, port 3001, forward to port 3001 inside the container.
    Diagram: the Uptime Kuma image becomes a running container on your PC; the browser reaches it through port 127.0.0.1:3001; its data lives in the uptime-kuma-data volume, which the backup script copies to a backups folder
    What you'll build in steps 3 and 4. The container is disposable. The volume is the part you protect.
  2. Three more names you'll see. Docker Engine is the background service that actually runs containers, and it runs natively on Linux. Docker Desktop is an app for Windows and Mac that runs Docker Engine inside a small built-in Linux machine and adds a dashboard. Docker Compose reads a compose.yaml file, so you write an app's settings down once instead of retyping a long command.

    TipThe website monitoring lesson installed Uptime Kuma with Node instead. That works, but most self-hosted apps only document Docker, and Docker gives you one install, update and backup routine for all of them.
✓
CheckpointWithout looking back, you can say which half of 127.0.0.1:3001:3001 is your computer and which is the container, and what you'd lose by deleting a container that has no volume.
If it breaksIs a container the same as a virtual machine?
Is a container the same as a virtual machine?
No. Containers share the host's Linux kernel, so they start in seconds and use little memory. On Windows and Mac, Docker Desktop runs one small Linux virtual machine and all your containers share it.
Still stuck? Ask the community
Next mission · Build things with codeBeautiful invoices and CVs from plain text, and a CV service you can sell
→