← Back
tech

Docker for beginners — how I use it and why you should

Theo|Jun 2026|~5 min read

Docker was one of those things I kept hearing about but put off learning for ages. When I finally sat down and figured it out, I couldn't believe how much time I'd wasted not using it. This is the intro I wish someone had given me.

The problem Docker solves

The classic problem in software is "it works on my machine." You set something up on your machine, it runs fine, you move it somewhere else and it breaks because the other machine has different software, different versions, different configuration. Docker solves this by packaging your application and everything it needs into a single unit called a container. The container runs the same way everywhere.

Think of a container like a tiny isolated computer running inside your actual computer. It has its own filesystem, its own network, its own processes — completely separate from everything else.

Images vs containers

An image is the blueprint. A container is a running instance of that blueprint. You can run multiple containers from the same image. Images are built from a Dockerfile which just describes what goes in them — what base OS, what software to install, what files to copy in, what command to run.

A basic example

Running AdGuard Home in Docker looks like this:

docker run -d \
  --name adguardhome \
  -p 53:53/udp \
  -p 3000:3000 \
  -v /opt/adguard/data:/opt/adguardhome/work \
  adguard/adguardhome

That pulls the AdGuard Home image, starts a container, maps the ports, and mounts a volume so the data persists even if the container restarts. One command and it's running.

Docker Compose

Once you have more than one container, managing them with individual docker run commands gets messy. Docker Compose lets you define all your containers in a single docker-compose.yml file and start them all with docker compose up -d. My NAS media stack — qBittorrent, Prowlarr, Radarr, Sonarr, Plex — all runs from one Compose file.

Why it's worth learning

Once you get comfortable with Docker, deploying services becomes trivial. New service? Find the image, write a quick Compose entry, done. Something breaks? Tear down the container and start fresh — your data is safe in the volume. Want to move everything to a new machine? Copy the Compose file and the data volumes. That's genuinely it.

The Docker Hub has images for almost everything. Before you spend time installing something manually, check if there's a Docker image for it. There usually is.