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
| Topic | Description |
|---|---|
| Why Docker | Why teams use Docker for reproducible, portable application environments |
| Docker Architecture | Docker client, daemon, Engine API, objects, registries, and runtime flow |
| Dockerfile, Build, Image, Run | The first Docker workflow: write a Dockerfile, build an image, run a container |
| Dockerfile Structure and Image Layers | Dockerfile anatomy, image layers, RUN, CMD, and docker build in more detail |
| Docker Image Build Time and Runtime | Build-time image creation, image layers, runtime containers, tags, and digests |
| Container Changes and Image Updates | What happens when you install software inside a running container, and how to turn that into an image |
| Persist Data in Docker | Container writable layers, volumes, bind mounts, tmpfs, and volume cleanup |
| Useful Docker Commands | Practical command reference for pull, images, ps, create, start, stop, and exec |
| Docker Networking | Bridge networking, default bridge, docker0, container eth0, and outbound connectivity |
| Docker Compose | Multi-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
Dockerfileacts like a version-controlled recipe for the runtime environment. - Docker is useful locally, in CI, and as a handoff format for production platforms.