✦ For everyone, free.

Practical knowledge for real and everyday life

Home

1.3.2.1 Host Installation Contrast

A focused guide to Host Installation Contrast, connecting core concepts with practical Docker and container operations.

Host installation contrast compares the traditional approach of installing an application's runtime and dependencies directly onto a host machine against installing nothing on the host beyond Docker itself, highlighting how much of a host's long-term maintenance burden depends on what is installed directly on it.

What Host Installation Traditionally Required

Running an application without containers usually meant installing a language runtime, a package manager, system libraries, and any services the application depends on directly onto the host's operating system, each becoming part of the host's permanent state, subject to its own update schedule and potential for conflicts with other installed software.

apt-get install python3.12 python3-pip postgresql-16
pip install -r requirements.txt

Every one of these installed components now needs to be tracked, patched, and eventually upgraded or removed as part of the host's own maintenance.

What Docker Requires on the Host Instead

With Docker, the host only needs the Docker engine installed; everything the application needs lives inside images, not on the host's own filesystem.

docker run -d --name myapp myapp:1.0
docker run -d --name db postgres:16

Removing the application later means removing its containers and images — the host's own installed package list is unaffected, because the application's dependencies were never installed there in the first place.

docker rm -f myapp db
docker rmi myapp:1.0 postgres:16
Reduced Host Drift Over Time

Because fewer things are installed directly on the host, there is less for host-level configuration management to track, and less risk of one application's dependency installation interfering with another's, since application dependencies live inside containers rather than in the host's shared package namespace.

Simplifying Host Provisioning

Provisioning a new host becomes simpler: install an operating system and the Docker engine, and the host is ready to run any containerized application, rather than needing a custom provisioning script tailored to each specific application's dependency list.

curl -fsSL https://get.docker.com | sh
Why This Matters for Long-Term Operations

A host with minimal direct installation is easier to reason about, patch, and eventually replace, since its own state is small and mostly limited to the Docker engine itself — most of the complexity that used to live on the host now lives in version-controlled image definitions instead.