Docker

Overview

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.