Active Nerds
Learning Paths
Infrastructure & Deployment

Docker

How containers actually isolate processes — cgroups, namespaces, and UnionFS layers, not just 'it's lighter than a VM'.

54 modules~12 hours totalBeginner–Advanced

Interactive Question & Article Stream

Browse questions with quick answers, filter by level or domain, and expand full articles on demand in a continuous reading view.

Start Reading Stream

Beginner Modules(0/17)

Containers vs. VMs: What the Kernel Actually Isolates

Article

A junior engineer says "a container is just a lightweight VM." Explain precisely why this analogy is wrong, and describe what a container actually *is* at the process level on the host.

12 min+10 XP

Images, layers, and the Dockerfile instruction order that matters

Article

You run `docker build` twice on the same Dockerfile with no changes and notice the second build finishes in under a second. Explain what mechanism makes this possible and what is actually being reused.

14 min+10 XP

Docker Layer Caching: Why Unchanged Rebuilds Finish Instantly

Article

You run `docker build` twice on the same Dockerfile with no changes and notice the second build finishes in under a second. Explain what mechanism makes this possible and what is actually being reused.

3 min+10 XP

Containers vs. VMs: Why the Lightweight VM Analogy Is Wrong

Article

A junior engineer says "a container is just a lightweight VM." Explain precisely why this analogy is wrong, and describe what a container actually *is* at the process level on the host.

4 min+10 XP

docker run, build, exec — the three commands you'll use daily

Q&A Challenge

A junior engineer says "a container is just a lightweight VM." Explain precisely why this analogy is wrong, and describe what a container actually *is* at the process level on the host.

20 min+15 XP

Containers vs. VMs: Why 'Lightweight VM' Is the Wrong Mental Model

Article

A junior engineer says "a container is just a lightweight VM." Explain precisely why this analogy is wrong, and describe what a container actually *is* at the process level on the host.

4 min+10 XP

Docker Layer Caching: Why Unchanged Builds Finish Instantly

Article

You run `docker build` twice on the same Dockerfile with no changes and notice the second build finishes in under a second. Explain what mechanism makes this possible and what is actually being reused.

4 min+10 XP

ENTRYPOINT vs. CMD: Why Removing CMD Changes Runtime Behavior

Article

Your team's Dockerfile uses both `ENTRYPOINT` and `CMD`. A teammate wants to remove `CMD` because "it seems redundant." Explain why removing it would change the container's runtime behavior and give a scenario where this distinction matters operationally.

4 min+10 XP

Bind Mounts vs. COPY: Why Dev Convenience Doesn't Belong in Production

Article

A developer mounts their local project folder into a container with `-v` during development, but in the production Dockerfile they use `COPY`. Explain why these two approaches exist and why you would never rely on a bind mount in a production deployment.

5 min+10 XP

Container Filesystem Lifecycle: Why Data Disappears Without Volumes

Article

A container running a database is removed with `docker rm`, and the team is shocked their data disappeared. Diagnose what likely went wrong in their setup and explain the container filesystem lifecycle that caused this.

4 min+10 XP

Docker Port Mapping: How a Packet Reaches Your Container

Article

A service inside a container listens on port 8080, and it's exposed with `-p 80:8080`. Walk through what actually happens to a packet arriving at the host's port 80 to reach the process inside the container.

4 min+10 XP

Alpine vs. Ubuntu Base Images: Trade-offs Beyond Image Size

Article

Two engineers build the same application — one from `ubuntu:latest`, another from `alpine`. Beyond image size, what practical engineering trade-offs should inform this base image decision?

5 min+10 XP

Docker Logging Model: Why stdout/stderr, Not Log Files

Article

A teammate adds application logging to a file inside the container instead of stdout/stderr, then complains `docker logs` shows nothing. Explain the underlying logging model Docker expects and why their approach breaks it.

4 min+10 XP

Docker Build Context: Why an Untouched node_modules Folder Slows Builds

Article

A build suddenly takes much longer after a teammate added a large `node_modules` folder to the project directory, even though it's never referenced in the Dockerfile. Explain what's happening and how to fix it.

4 min+10 XP

Environment Variables in Docker: Configuring One Image for Many Environments

Article

Your application needs different database URLs in staging versus production, but you want to use the exact same image in both. Explain the mechanism that makes this possible without rebuilding the image, and why baking config into the image is considered an anti-pattern.

4 min+10 XP

Container Lifecycle and PID 1: Why Containers Exit When Their Main Process Stops

Article

A container running a simple shell script exits immediately after starting, even though the script "runs forever" when tested locally. What container lifecycle rule explains this behavior?

4 min+10 XP

Docker Image Tagging: Why the latest Tag Breaks Reproducible Deployments

Article

Your team deploys using the `latest` tag and occasionally ends up with different code running on different hosts despite "not changing anything." Explain why tag-based deployment without immutable references is risky in production.

4 min+10 XP

Intermediate Modules(0/12)

Multi-Stage Docker Builds: Shrinking Go Images by Discarding the Compiler Toolchain

Article

Your Go application's final image is 900MB because it includes the full compiler toolchain. Design a multi-stage build that resolves this, and explain precisely what gets carried between stages and what gets discarded.

6 min+15 XP

Docker Layer Caching: Why COPY Order Determines Build Speed

Article

A Dockerfile does `COPY . .` before `RUN npm install`. Every single code change forces a full dependency reinstall during CI, adding 4 minutes per build. Explain the caching mechanic causing this and restructure the instructions to fix it.

5 min+15 XP

BuildKit Cache Mounts: Persistent Dependency Caching Across Ephemeral CI Runners

Article

Even after reordering Dockerfile instructions for cache-friendliness, your team's CI runners (ephemeral, ban `--cache-from` layer reuse) still reinstall dependencies every run. What BuildKit feature addresses this specific problem, and how does it differ from ordinary layer caching?

6 min+15 XP

Default Bridge vs. User-Defined Bridge: Why Container Name Resolution Differs

Article

Two containers on the default `bridge` network can't resolve each other by container name, but two containers on a user-defined bridge network can. Explain the underlying difference in how Docker handles DNS resolution between these two network types.

5 min+15 XP

Host Networking vs. Bridge Networking: The Latency Trade-Off Behind --network host

Article

A latency-sensitive service performs noticeably better under `--network host` than the default bridge network. Explain the actual network path difference that causes this performance gap, and identify the operational trade-off the team is accepting by using host networking.

6 min+15 XP

depends_on in Docker Compose: Why Container Startup Order Isn't Application Readiness

Article

A `docker-compose.yml` uses `depends_on` to ensure the database container starts before the API container, but the API still crashes on startup trying to connect. Explain why `depends_on` alone doesn't solve this problem and what actually needs to happen.

5 min+15 XP

UID Mapping in Docker: Why Bind-Mounted Files End Up Owned by Root

Article

A container runs as root by default, and a file it writes to a bind-mounted volume ends up owned by `root` on the host, breaking the host user's ability to edit it. Explain the UID mapping reality behind this, and describe two distinct strategies to prevent it.

6 min+15 XP

Running Containers as Non-Root: Dockerfile Changes and the Trade-Offs They Introduce

Article

Your security team mandates that no production container may run as UID 0. Walk through what changes are required in the Dockerfile and what operational issues (port binding, file permissions, package installs) commonly break as a result — and how to resolve each.

7 min+15 XP

Docker's Embedded DNS Resolver: Why External Hostname Lookups Intermittently Fail Under Load

Article

A container intermittently fails to resolve an external hostname under load, though `curl` works fine most of the time. Explain how Docker's embedded DNS resolver works and a plausible root cause for intermittent resolution failures.

6 min+15 XP

Docker Compose Health Checks: Reporting True Application Readiness, Not Just Process State

Article

A Compose stack reports all containers as "running," yet the application is non-functional because the API started before the database finished initializing. Design a `HEALTHCHECK`-based solution and explain how it changes container state reporting versus a plain process check.

6 min+15 XP

Docker Build Context Bloat: How .dockerignore Prevents Sending Unnecessary Files to the Daemon

Article

Your CI logs show the build context being sent to the daemon is 1.2GB despite a small application. Explain the mechanism by which this bloat occurs and how `.dockerignore` interacts with the build process to prevent it.

5 min+15 XP

Named Volumes Across Hosts: Why Local Volumes Don't Follow Rescheduled Containers

Article

A team migrating from a single Docker host to a small Swarm/multi-host setup discovers that named volumes don't "follow" a rescheduled container to another node. Explain why this happens and what class of solution is required.

6 min+15 XP

Advanced Modules(0/12)

Linux Namespaces: The Isolation Mechanisms Behind Every Container

Article

Explain, namespace by namespace (PID, NET, MNT, UTS, IPC, USER), what specific kernel isolation each one provides to a container, and describe a real scenario where sharing one particular namespace between containers (e.g., `--pid=container:x`) is a deliberate and useful debugging technique.

9 min+20 XP

cgroups Memory Accounting: Why OOM-Kills Happen Below the Limit

Article

A container set with `--memory=512m` gets OOM-killed even though `docker stats` shows it using only 300MB of RSS at the time. Explain what other memory accounting cgroups tracks (page cache, kernel memory) that could explain this, and how you'd investigate.

9 min+20 XP

OverlayFS Copy-Up: The Hidden Cost of Small-File Writes in Containers

Article

A build suddenly takes much longer after a teammate added a large `node_modules` folder to the project directory, even though it's never referenced in the Dockerfile. Explain what's happening and how to fix it.

8 min+20 XP

From docker run to runc: Tracing the Full Container Startup Chain

Article

Diagram (in words) the full process chain from a `docker run` invocation down to the actual container process, explicitly naming the role of `dockerd`, `containerd`, `containerd-shim`, and `runc`, and explain why the shim's existence allows the Docker daemon to be restarted without killing running containers.

8 min+20 XP

Linux Capabilities: The Least-Privilege Alternative to --privileged

Article

A container needs to bind to a privileged port and adjust system time as part of its function, but your security policy forbids `--privileged`. Explain the capability-based alternative, name the specific capabilities required, and articulate why granular capability grants are architecturally superior to the privileged flag.

8 min+20 XP

Rootless Docker: How User Namespace Remapping Blocks Host Root Escalation

Article

Your application needs different database URLs in staging versus production, but you want to use the exact same image in both. Explain the mechanism that makes this possible without rebuilding the image, and why baking config into the image is considered an anti-pattern.

9 min+20 XP

Docker Networking Internals: How Custom Bridges Rewrite iptables NAT and FILTER Rules

Article

You create a custom bridge network and notice new `iptables` chains and rules appear on the host without you touching `iptables` directly. Explain what Docker is doing to the NAT and FILTER tables to make inter-container and container-to-external routing work, and describe a scenario where a conflicting host firewall rule could silently break container connectivity.

9 min+20 XP

VXLAN Overlay Networks: How Multi-Host Containers Communicate by IP

Article

In a multi-host overlay network (e.g., Swarm), two containers on different physical hosts communicate directly by container IP. Explain the encapsulation mechanism (VXLAN) that makes this possible at the packet level, and identify the MTU-related failure mode this commonly introduces.

9 min+20 XP

OCI Image Manifest vs. Runtime Spec: From Pulled Image to Running Container

Article

A container running a simple shell script exits immediately after starting, even though the script "runs forever" when tested locally. What container lifecycle rule explains this behavior?

8 min+20 XP

CFS CPU Throttling: Why --cpus=2 Causes Latency Spikes Under 200% Usage

Article

A service configured with `--cpus=2` shows periodic latency spikes even though average CPU usage sits well under 200%. Explain how CFS (Completely Fair Scheduler) quota-based throttling within a fixed period can cause this, and why average utilization metrics can be misleading here.

9 min+20 XP

--pid=host: The Process Isolation Guarantee It Breaks — and When That's Justified

Article

A container running as an unprivileged process is still able to see and signal processes on the host when run with `--pid=host`. Explain precisely what isolation guarantee is being intentionally broken, and describe one legitimate production use case where this trade-off is justified.

8 min+20 XP

overlay2 vs. devicemapper/btrfs: Storage Driver Trade-offs at Container Density Scale

Article

Your team deploys using the `latest` tag and occasionally ends up with different code running on different hosts despite "not changing anything." Explain why tag-based deployment without immutable references is risky in production.

9 min+20 XP
Next Recommended Learning Path

Kubernetes

Declarative cluster state: how the control plane reconciles desired vs. actual, across pods, deployments, and services.

Explore Kubernetes Path