Docker Concepts
After installing Docker (see Install), get the skeleton concepts and the two interfaces straight first, so the commands, settings, and Compose that follow do not feel fragmented.
The Desktop app and the CLI are one engine
The Docker Desktop GUI and thedocker command in your terminal drive the same Docker engine, just two interfaces:
| Interface | Best for |
|---|---|
| Docker Desktop GUI | Quickly checking container state, changing settings, toggling services, viewing resource usage |
docker CLI | Reproducible, scriptable, composable operations |
docker from the WSL Linux terminal is best: the filesystem and engine both live on the Linux side, with one less cross-OS layer (expanded in Where data lives and Performance settings).
The three core concepts
Image, Container, and Volume are Docker’s skeleton; get their purpose straight:- Image
- Container
- Volume
A read-only template that packs in the app’s code, runtime, libraries, and config.
- Think of it as an install disc: it does not run by itself, it is the blueprint you open containers from.
- Built layer by layer by a Dockerfile, or pulled from Docker Hub.
- An image is a stack of read-only layers; identical layers are shared across images, saving disk and speeding downloads.
Next
- Docker CLI commands: what you use day to day.
- Docker Hub: where images come from and how to trust them.
- Performance settings: resource allocation on the WSL 2 backend.
- Where data lives: volume, bind mount, tmpfs, and no mount.
- Docker Compose: wiring multiple containers into one app.