Blog
Thoughts on engineering, design, and building great products.
Docker Architecture: Client, Daemon, containerd and runc
A deep dive into Docker architecture: the client and daemon talk over a REST API, and beneath dockerd sit containerd and runc. Understand what really happens when you type docker run, with diagrams and commands you can verify yourself.
What a Container Is Made Of: Namespaces, Cgroups and Union Filesystem
A deep dive into the lowest layer: three Linux kernel features — namespaces (isolation), cgroups (resource limits) and union filesystem (layers) — turn an ordinary process into a container. With diagrams and commands you can verify yourself.
Installing Docker and Running Your First Container
Install Docker for your OS, then run your first container and master the full lifecycle: run, ps, logs, exec, stop, rm. With a container state diagram and a cleanup section.
Images and the Layer Mechanism: Pull, Tag, Docker Hub
Where images come from and what they're made of: how to read an image name, the Docker Hub registry, layers shared across images, digests, and managing images on your machine with pull/images/tag/rmi/history.
Writing a Dockerfile and Build Cache
Build your own application image: the core Dockerfile instructions, each instruction creating a layer, and how the build cache works — why putting dependency installation before copying code makes builds much faster.
Volumes and Bind Mounts: Storing Data Persistently
Data in a container vanishes when the container is removed. This article fixes that: named volumes managed by Docker and bind mounts that attach a host directory directly, when to use which, with examples proving the data survives.
Networking in Docker: Bridge, veth and Port Mapping
How containers reach each other and the outside world: the network drivers, the default bridge and the veth mechanism, port publishing, and why a user-defined network lets containers call each other by name while the default bridge does not.