Kelly Mears

Containerization

Packaging an application with its dependencies into an isolated, reproducible runtime unit.

Systems & Tooling1 min read197 words15 out · 26 in
also calledContainersDocker

Containerization packages an application together with its dependencies into an image that runs in an isolated environment sharing the host kernel. Compared with virtual machines it is far lighter; compared with running software directly it is far more reproducible.

The benefits are that the environment is described in a file, identical everywhere, and disposable — resetting a service to a known state is deleting a container. That last property is what makes containers so valuable for local development databases.

The costs are also concrete. Filesystem and network performance are lower than native, particularly on hosts where the kernel is virtualized. Debugging crosses a boundary. And the container runtime is itself a service that can fail in confusing ways: a wedged engine can accept connections on published ports while every query hangs indefinitely, so an application appears to connect and then stalls forever, with the runtime's own status still reporting healthy. Checking whether the runtime responds at all, with a short timeout, is the first move — it distinguishes a wedged engine from a slow query in seconds.

Containers also concentrate the Port problem: published ports are host ports, so two projects both mapping a database port collide.

See also14

Git Worktree

An additional working directory attached to one repository, each on its own branch.

Version Control & Delivery15 connections

Environment Variable

A named value in a process's environment, inherited by its children — the standard configuration channel.

Systems & Tooling23 connections

Determinism

The property that identical inputs produce identical outputs, and the foundation of caching and verification.

Systems & Tooling61 connections

Continuous Deployment

Automatically releasing every change that passes validation.

Version Control & Delivery18 connections

Shell

The interactive command interpreter, and a programming language with unusually sharp edges.

Systems & Tooling24 connections

Secret Management

Storing, distributing, and rotating credentials without embedding them in code or history.

Systems & Tooling33 connections

Ground Truth

The measurement that arbitrates, as opposed to the artifact that merely reports.

Method99 connections

Vacuous Truth

A statement that holds only because its subject set is empty — a green result that measured nothing.

Method26 connections

Silent Failure

A failure that produces no signal, so the absence of an error reads as success.

Method73 connections

Hypervisor

The layer that lets multiple guest operating systems share one machine's hardware, each believing it owns the machine.

Systems & Tooling11 connections

Dynamic Linking

Loading a program's libraries at run time from shared files instead of copying them into the executable, which saves space and eases patching at the cost of fragile dependencies.

Systems & Tooling6 connections

Kubernetes

A system that runs containers across a cluster of machines by continually reconciling what is running with a declared desired state, powerful and notoriously complex.

Systems & Tooling10 connections

Disk Image

A single file holding the complete contents and structure of a disk, used to install operating systems, run virtual machines, preserve old media, and copy drives exactly for forensic investigation.

Systems & Tooling10 connections

Web Hosting

Renting space on someone else's servers to put a website online, a business that moved from free personal pages and crowded shared machines to virtual servers, rented cloud infrastructure and services that host static files at the edge of the network.

Web Platform9 connections

Linked from26