Docker is the front door to modern back-end and self-hosting work, and most tutorials drop you in the middle of it. This series does not. It starts from nothing and takes you all the way to an app you built, hardened, and deployed over HTTPS on a real server. Every guide is hands-on, and every command and number in them was run on real Docker and captured, not paraphrased.
Use this page as the map. Work straight down it if you are starting out, or jump to the piece you need.
Info
Every guide in this series is a real lab: the commands, output, image sizes, and errors are genuine, captured on Docker Engine 29.x. The runnable code for each one lives in the companion repo linked at the bottom.
The path, start to finish
1. Install Docker on macOS, Windows (WSL2), and Linux
One guide, three operating systems, ending in a verified docker run hello-world and the post-install checks each OS actually needs.
2. Run Your First Containers
The everyday lifecycle on a real nginx: run, ps, logs, exec, stop, start, and rm, plus the images-versus-containers mental model.
3. Docker Compose: Run a Multi-Service Stack
Move from single containers to a declarative Web plus Postgres plus Redis stack with one docker compose up, wired together over a Compose network.
4. Lean Docker Images: Multi-Stage Builds and Layer Caching
Cut the same app from a 1.62GB image to 233MB with a multi-stage build, and measure exactly why it shrank and why rebuilds get faster.
5. Where Your Data Lives: Volumes, Bind Mounts, and Networks
Make data survive restarts, back up and restore a volume, and connect containers by name on a user-defined network.
6. Operating Containers: Healthchecks, Limits, Restart Policies, and Env Config
Turn a working stack into one that behaves in production: health-gated startup, memory and CPU limits, self-healing restarts, and clean env config.
7. Docker Security Basics: Non-Root, Read-Only, Image Scanning, and Secrets
Harden a container without breaking it: scan for CVEs, run as non-root, mount the root filesystem read-only, drop capabilities, and keep secrets out of images.
8. Docker vs Podman: A Hands-On Comparison and Migration
Run the same images and Compose file under both engines to see what daemonless and rootless really change, and what it takes to migrate.
9. Capstone: Dockerize Your Own App End to End
Put it all together: a lean image, a hardened Compose stack, a CI build that pushes to a registry, and a deploy behind Caddy with automatic HTTPS.
Quick answers
Two short reads that clear up the questions almost everyone hits early:
- Docker Images vs Containers, Explained proves the difference with real output: one image, many containers, each with its own writable layer.
- Fix: Permission Denied on the Docker Daemon Socket explains the error every Linux beginner sees and the one permanent fix (plus the insecure one to avoid).
Tip
Get the code: every runnable lab in this series lives in the docker-foundations repo, one folder per post. Clone it and follow along.
Where to start
If you are new, begin at step 1 and go in order; each post builds on the last. If you already run containers, jump to Compose, security, or the capstone. By the end you will be able to build a lean image, run it as a hardened stack, and ship it to a server over HTTPS, all with tools you understand because you ran every step yourself.
Top comments (0)