10 parts
Learn Docker from scratch: containers vs VMs, images, Dockerfiles, layers, volumes, networking, and docker-compose — package any app to run anywhere.
What containers are, the 'works on my machine' problem they solve, and how they differ from virtual machines: the mental model before you run anything.
7 min read
Install Docker and run your first containers with docker run (hello-world and a real web server), then list, stop and remove them with the core commands.
9 min read
The key Docker distinction: images are the blueprint, containers are the running instance. Pull from registries, understand tags, and manage both, with a diagram.
Write a Dockerfile from scratch: FROM, WORKDIR, COPY, RUN, EXPOSE and CMD, then docker build your own image and run it. Package a real app step by step.
10 min read
Why Docker builds are fast (and sometimes slow): images are stacked layers, the build cache reuses them, and command order is everything, plus .dockerignore.
Reach into a container and keep its data: map ports with -p so you can hit the app, and use volumes so data survives a container being removed.
8 min read
Configure containers with environment variables, and let them talk to each other: Docker networks, container DNS by name, and connecting an app to a database.
Define a whole stack in one file: docker-compose.yml for an app plus a database, with docker compose up. Stop juggling long docker run commands.
Ship leaner, safer containers: multi-stage builds, slim base images, running as a non-root user, pinning versions, and .dockerignore. The production checklist.
Put it together: write a Dockerfile for a small web app, add a database with Docker Compose, wire them up with env and volumes, and run the whole stack.