About Docker
Docker packages an application and everything it needs into a portable container,
and this course walks through it the way most developers actually learn it. It starts
with Introduction to Containers (containers vs VMs, and the
OCI standards), then the prerequisite Linux and shell
knowledge and the kernel features (namespaces, cgroups, union
filesystems) that make containers work.
Next comes Installation & Setup and the Basics of
Docker: images, containers, the CLI, volumes, and networks. From there,
Data Persistence covers volumes, bind mounts, and third-party images,
while Building Container Images covers Dockerfiles, layer caching, and
multi-stage builds.
Container Registries covers storing and tagging images on Docker Hub,
GHCR, and cloud registries. Running Containers & Networking covers
docker run, Docker Compose, and container networks,
and Container Security & Developer Experience covers image and
runtime security, hot reloading, debuggers, and CI.
Finally, Deploying & Orchestration covers Kubernetes,
Nomad, Docker Swarm, and PaaS options: the natural next
step once single containers feel routine.
Content
11 modules
01
Introduction to Containers
What a container actually is, how it differs from bare metal and full VMs, and how Docker fits with the OCI standards.
Containers vs VMsDocker & OCIIsolation
02
Prerequisite Knowledge
The Linux, shell, and application background that makes everything else in the course click faster.
Linux FundamentalsShell ScriptingPackage Managers
03
Underlying Technologies
The Linux kernel features that make containers possible: process isolation, resource limits, and layered filesystems.
NamespacescgroupsUnion Filesystems
04
Installation & Setup
Getting Docker running on your machine, whether you're on Windows, Mac, or a Linux server.
Docker DesktopDocker Enginehello-world
05
Basics of Docker
The core building blocks used in nearly every Docker command: images, containers, the CLI, volumes, and networks.
ImagesContainersDocker CLI
06
Data Persistence & 3rd Party Images
Keeping data after a container stops with volumes and bind mounts, and running images someone else built.
VolumesBind MountsOfficial Images
07
Building Container Images
Writing your own Dockerfiles, using layer caching well, and keeping images small and secure with multi-stage builds.
DockerfilesLayer CachingMulti-stage Builds
08
Container Registries
Where built images are stored, versioned, and pulled from, and how to tag them properly.
Docker HubGHCRImage Tagging
09
Running Containers & Networking
Starting containers, configuring them at runtime, wiring services together with Compose, and container networking.
docker runDocker ComposeNetworking
10
Container Security & Developer Experience
Locking down images and running containers, and speeding up the daily loop with hot reloading, debuggers, and CI.
Runtime SecurityImage SecurityHot Reloading
11
Deploying & Orchestration
Running more than one container across more than one machine with Kubernetes, Nomad, Docker Swarm, or a PaaS.
KubernetesDocker SwarmNomad
Projects
5 builds
Containerize a Node.js & Express App
Write a Dockerfile for an Express app, build the image, run it as a container, and map ports so you can reach it from your browser.
Run a Multi-Container Stack with Docker Compose
Define several services in a single Compose file and bring the whole application up and down with one command.
Shrink Your Images with Multi-Stage Builds
Split a Dockerfile into build and runtime stages so the final image ships only what it needs to run.
Build & Push Images to Docker Hub with GitHub Actions
Set up a CI/CD workflow that builds your Docker image and pushes it to Docker Hub automatically.
Harden Your Docker Images
Work through practical best practices for reducing the attack surface of the container images you run in production.
What You Can Do After This Course
By the end of the curriculum you'll have worked through 5 hands-on projects and
covered the core of what a developer or DevOps role expects from someone who "knows Docker."
Concretely, you'll be able to:
Explain containers clearly — how they differ from VMs and bare metal, and what namespaces, cgroups, and union filesystems do underneath.
Work fluently in the Docker CLI — pull, run, inspect, and clean up images and containers without guessing.
Persist and share data — choose between volumes and bind mounts, and run databases and other third-party images safely.
Build lean, cache-friendly images — write Dockerfiles with sensible layer ordering and multi-stage builds.
Publish and version images — tag properly and push to Docker Hub, GHCR, or a cloud registry.
Run multi-container apps — configure containers at runtime, use Docker Compose, and design container networks.
Secure and orchestrate — harden images and running containers, then move on to Kubernetes, Nomad, Swarm, or a PaaS.