Blog
Thoughts on engineering, design, and building great products.
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.
Docker Compose: Running Multi-Container Applications
Declare a whole multi-component app (web, database, cache) in one file, then run it with a single command. Understand the compose file, the auto-created network that lets services call each other by name, and the up/down lifecycle.