Docker is a platform for building, running, sharing, and managing containers. In these notes, Docker is treated as the practical toolchain built on top of container concepts.

Start with Virtualization and Containers if the difference between bare metal, VMs, and containers is not clear yet. Then read Processes and Containerization to understand how a container relates to a normal Linux process.

Topics

TopicDescription
Why DockerWhy teams use Docker for reproducible, portable application environments
Docker ArchitectureDocker client, daemon, Engine API, objects, registries, and runtime flow
Dockerfile, Build, Image, RunThe first Docker workflow: write a Dockerfile, build an image, run a container
Dockerfile Structure and Image LayersDockerfile anatomy, image layers, RUN, CMD, and docker build in more detail
Docker Image Build Time and RuntimeBuild-time image creation, image layers, runtime containers, tags, and digests
Container Changes and Image UpdatesWhat happens when you install software inside a running container, and how to turn that into an image
Persist Data in DockerContainer writable layers, volumes, bind mounts, tmpfs, and volume cleanup
Useful Docker CommandsPractical command reference for pull, images, ps, create, start, stop, and exec
Docker NetworkingBridge networking, default bridge, docker0, container eth0, and outbound connectivity
Docker ComposeMulti-container apps with compose.yaml, services, volumes, networks, and Compose commands

TL;DR

  • Docker packages an app and its dependencies into an image.
  • A container is a running instance of that image.
  • A Dockerfile acts like a version-controlled recipe for the runtime environment.
  • Docker is useful locally, in CI, and as a handoff format for production platforms.