Series · 10 parts
Docker, Compose & Kubernetes
Containers from fundamentals to Compose and Kubernetes, ending with debugging real-world issues.
-
Start Docker from zero: what a container really is (vs a VM), how images and layers work, the core docker run workflow, and your first hands-on container — with exercises to drill the commands.
-
Stop using other people's images and build your own: Dockerfile instructions, how layers and the build cache work, multi-stage builds for tiny images, .dockerignore, and tagging.
-
Containers are ephemeral — so where does data live? Named volumes vs bind mounts vs tmpfs, persisting a database, mounting source code for live dev, and managing env vars and secrets safely.
-
How containers talk: the default bridge vs user-defined networks, automatic DNS by container name, publishing vs exposing ports, and wiring an app container to a database container.
-
Run multi-container apps with one file and one command. The compose.yaml model: services, build vs image, ports, volumes, networks, depends_on, and the everyday compose workflow.
-
Level up Compose: env files and variable interpolation, healthchecks with depends_on condition, profiles for optional services, multiple compose files / overrides, and scaling services.
-
Make images small, fast, and safe: slim and distroless bases, layer-cache discipline, multi-stage recap, running as a non-root user, handling secrets properly, .dockerignore, and image scanning.
-
The debugging playbook: read logs, exec in, inspect, events and stats — then a field guide to the errors you will actually hit (port in use, exit codes, OOMKilled, ImagePullBackOff, cache, networking) and how to resolve each.
-
From a single host to a cluster: why Kubernetes exists, its architecture, and the core objects — Pods, Deployments, and Services. Spin up a local cluster with kind and deploy your first app from Compose.
-
Make a k8s app production-shaped and learn to debug it: ConfigMaps & Secrets, liveness/readiness probes, resource limits, rolling updates and scaling, then a kubectl debugging playbook for CrashLoopBackOff, ImagePullBackOff and more.