Conceptly

Understand docker visually

Explore each concept's architecture through animated diagrams. Click a card to dive deeper.

๐Ÿ’ปApp Code๐Ÿ“ฆContainer๐Ÿ–ฅ๏ธHost OS
๐Ÿ“ฆ

Container

An isolated execution unit that shares the host kernel

A container is a way to package an application and its runtime dependencies into an isolated execution unit. It looks like a small server from the outside, but internally it runs as isolated processes that share the host kernel.

โš™๏ธProcess๐Ÿ”’Namespace๐Ÿ‘๏ธIsolated View
๐Ÿ”’

Namespace & cgroup

The Linux kernel mechanisms that create container isolation

Linux namespaces and cgroups are the kernel features that make containers work. Namespaces decide what a process can see, and cgroups decide how much of the machine it can consume.

๐Ÿ“„Dockerfile๐Ÿ–ผ๏ธImage๐Ÿ“ฆContainer
๐Ÿ–ผ๏ธ

Image

An immutable bundle of files and defaults for running a container

A Docker image is the immutable package that contains the filesystem and defaults needed to start a container. A running container is an execution instance built from that image plus a small writable layer.

๐Ÿ“Instruction๐Ÿ“šLayer๐Ÿ–ผ๏ธImage
๐Ÿ“š

Layer & Cache

The unit that accumulates image changes and enables build cache reuse

Image layers explain how Docker accumulates filesystem changes and reuses previous build results. Cache is the mechanism that keeps unchanged steps from being repeated.

๐Ÿ”งBuild Stage๐Ÿ“‹COPY --from๐Ÿš€Runtime
๐Ÿ—๏ธ

Multi-stage Build

A Dockerfile pattern that separates build stages from runtime stages

Multi-stage build is the Dockerfile pattern that separates build environments from runtime environments. Early stages can compile and test, while the final stage keeps only the runtime artifacts.

๐Ÿ“„Dockerfile๐Ÿ”จBuild๐Ÿ“ฆImage
๐Ÿ“„

Dockerfile

The specification file for building container images

A Dockerfile is the text-based build specification for a container image. It declares the base image, file copies, dependency installation, build steps, and startup command in order. `docker build` reads that file and turns each step into image layers.

๐Ÿ”จBuild๐ŸชRegistry๐Ÿš€Deploy
๐Ÿช

Registry

A platform for storing and distributing container images

A container registry is the central storage and distribution point for container images. It plays a role similar to a source code host, except the artifact is a built image rather than source files. Teams push images after build and pull them wherever they need to run.

๐Ÿ“ฆContainer๐Ÿ’พVolume๐Ÿ–ฅ๏ธHost FS
๐Ÿ’พ

Volume

The storage mechanism for keeping container data persistent

A Docker volume keeps data alive independently from the container lifecycle. By default, writes go into the container's writable layer, which disappears when the container is removed. Volumes move important data outside that disposable layer.

๐Ÿ“ฆContainer๐Ÿ”—Network๐Ÿ“ฆContainer
๐Ÿ”—

Network

The virtual networking layer for container communication and isolation

Docker networking is the virtual networking layer that determines how containers talk to each other and to the outside world. Each container starts in an isolated network namespace, and Docker networks selectively reconnect the communication paths it needs.

๐Ÿ“„YAML๐ŸŽผCompose๐Ÿ“ฆServices
๐ŸŽผ

Compose

The tool for declaring multiple container services in one file

Docker Compose is the tool for defining and running multiple container services from one `compose.yml` file. It acts as a lightweight orchestration layer for application stacks rather than single containers.

๐Ÿ’ปDocker CLIโš™๏ธRuntime๐Ÿ“ฆContainer
โš™๏ธ

Runtime

The execution layer that turns images into isolated running processes

The container runtime is the execution layer that turns an image into real running processes. Behind `docker run`, the Docker daemon receives the request, containerd manages container lifecycle, and runc performs the final process launch. Users see one command, but the runtime is a chain of components with different responsibilities.

๐ŸณDocker๐Ÿ’“Health Check๐ŸšฆStatus
๐Ÿ’“

Health Check

The mechanism for checking whether an app inside a container is truly working

A health check is the mechanism that periodically verifies whether the application inside a container is actually functioning. Docker can tell whether the main process is still alive, but that is not the same as knowing whether the app can still serve real traffic.